Как корректно добавить новую таблицу?
Модераторы: m0p3e, edward_K, Модераторы
Как корректно добавить новую таблицу?
Нужно в Оракл добавить новую таблицу, чтобы она была видна vip-ом... Добавил SQL скриптом, пишет, что не может открыть таблицу....
Как бороться?
Как бороться?
при опытке вставить випом пишет "ошибка 46, не могу вставить"...
Код: Выделить всё
create table TestTable "TestTable"
With Replace
(
NumRef : longint "F1",
Memo : lvar "F2"
)
with index
(
TestTable00 = NumRef(Unique)
);
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
1. Никогда не делайте изменения внешними средствами - только vip( через сапорт тоже не катит - тока с командной строки).
2. Смотрите например конвертор 585-800 AltCrea.lot
3. первой строкой
Alter Dictionary ;
#include DICTYPES.DEF // возьмите с того конвертора
далее (разумеется со своими поправками, я занимаю номера 28400, кто-то на 30000)
Create Table D_EXTCL.ATTRVAL "Значения внешних атрибутов"
Using "AttrVal.dat"
With Table_Code = 1006
With Replace
(
NREC : comp "NREC",
LASTUSER : string[20] "LASTUSER",
LASTTIME : time "LASTTIME",
LASTDATE : date "LASTDATE",
FILIALNO : longint "FILIALNO",
WTABLE : word "Внутренний тип объекта",
CREC : comp "Код записи в таблице-объекте БД",
CATTRNAM : comp "Код названия аттрибута,ссылка на AttrNam",
VSTRING : string[120] "string-значение атрибута",
VDOUBLE : double "double-значение атрибута",
VDATE : date "date-значение атрибута",
VTIME : time "time-значение атрибута",
VCOMP : comp "comp-значение атрибута",
VLVAR : LVar "memo-значение атрибута"
)
With Index
(
ATTRVAL0 = NREC(Unique,Surrogate,Journal),
ATTRVAL2 = CATTRNAM,
ATTRVAL3 = WTABLE(Unique) + CREC(Unique) + CATTRNAM(Unique) + VSTRING(Unique,length=40),
ATTRVAL4 = WTABLE(Unique) + CREC(Unique) + CATTRNAM(Unique) + VDOUBLE(Unique),
ATTRVAL5 = WTABLE(Unique) + CREC(Unique) + CATTRNAM(Unique) + VDATE(Unique),
ATTRVAL6 = WTABLE(Unique) + CREC(Unique) + CATTRNAM(Unique) + VCOMP(Unique)
);
отдельным лотом выполнить
// для обнуления контрольной суммы
UPDATE X$FILES WHERE XF$CODE = 0 SET XF$CHECKSUM = 0;
иначе галка будет ругаться при входе.
тренируйтесь сначала только на тесте
прежде чем что-то делать запишите контрольную сумму - chk_ora не пойдет работать, пока вы ее на место не поставите. Это кстати учтите и при проведении конверторов. Часть из них требуют подсовывания нового словаря из образца - потом его нужно будет тоже изменять.
2. Смотрите например конвертор 585-800 AltCrea.lot
3. первой строкой
Alter Dictionary ;
#include DICTYPES.DEF // возьмите с того конвертора
далее (разумеется со своими поправками, я занимаю номера 28400, кто-то на 30000)
Create Table D_EXTCL.ATTRVAL "Значения внешних атрибутов"
Using "AttrVal.dat"
With Table_Code = 1006
With Replace
(
NREC : comp "NREC",
LASTUSER : string[20] "LASTUSER",
LASTTIME : time "LASTTIME",
LASTDATE : date "LASTDATE",
FILIALNO : longint "FILIALNO",
WTABLE : word "Внутренний тип объекта",
CREC : comp "Код записи в таблице-объекте БД",
CATTRNAM : comp "Код названия аттрибута,ссылка на AttrNam",
VSTRING : string[120] "string-значение атрибута",
VDOUBLE : double "double-значение атрибута",
VDATE : date "date-значение атрибута",
VTIME : time "time-значение атрибута",
VCOMP : comp "comp-значение атрибута",
VLVAR : LVar "memo-значение атрибута"
)
With Index
(
ATTRVAL0 = NREC(Unique,Surrogate,Journal),
ATTRVAL2 = CATTRNAM,
ATTRVAL3 = WTABLE(Unique) + CREC(Unique) + CATTRNAM(Unique) + VSTRING(Unique,length=40),
ATTRVAL4 = WTABLE(Unique) + CREC(Unique) + CATTRNAM(Unique) + VDOUBLE(Unique),
ATTRVAL5 = WTABLE(Unique) + CREC(Unique) + CATTRNAM(Unique) + VDATE(Unique),
ATTRVAL6 = WTABLE(Unique) + CREC(Unique) + CATTRNAM(Unique) + VCOMP(Unique)
);
отдельным лотом выполнить
// для обнуления контрольной суммы
UPDATE X$FILES WHERE XF$CODE = 0 SET XF$CHECKSUM = 0;
иначе галка будет ругаться при входе.
тренируйтесь сначала только на тесте
прежде чем что-то делать запишите контрольную сумму - chk_ora не пойдет работать, пока вы ее на место не поставите. Это кстати учтите и при проведении конверторов. Часть из них требуют подсовывания нового словаря из образца - потом его нужно будет тоже изменять.
-
- Местный житель
- Сообщения: 474
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Сибирь-матушка
- Контактная информация:
DictTypes.Def в принципе можно и не подключать - там только макроопределения основных непримитивных типов и обойтись можно без него.
А насчет кода таблиц - тут сложнее .
Диапазон таблиц для пользователей был раньше выделен с 31500 по 31999 (до Атлантиса 3.03.19 включительно, дальше - не в курсе, не долши мы до них).
А насчет кода таблиц - тут сложнее .
Диапазон таблиц для пользователей был раньше выделен с 31500 по 31999 (до Атлантиса 3.03.19 включительно, дальше - не в курсе, не долши мы до них).
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
oiko
При удалении записи из родительской таблицы все дочерние тоже атоматом удаляются.
как его установить?? Пример создания можно? Вы со схемой не перепутали??установить TABLESPACE можно.
вы меня не поняли, Пример SQL:удаляйте випом как и создавали
Код: Выделить всё
ALTER TABLE SomeSheme.SomeTable1 ADD (
CONSTRAINT SomeName
FOREIGN KEY (SomeKey)
REFERENCES SomeSheme.SomeTable2(SomeKey1),
[b]ON DELETE CASCADE[/b]);
Последовательности тоже(Create Sequence)?триггеры при помощи скл вип триггеры делать не умеет.
Нет схема одна иначе Галка этих таблиц не увидит. Создаете отдельное табличное пространство со своими файлами. Убиваете в старом таблицу создаете в новом и вкачиваете данные.
Удаляйте данные в самой Галактике - по идее тогда сама программа удалит ссылки в других таблицах. Если вы сами хотите такие ключи писать можете напоротся когда Галка захочет удалить запись в таблице а СУБД уже постаралось и удалило и Галка до конца транзакцию не доведет.
А также процедуры, функции и т.д.
Удаляйте данные в самой Галактике - по идее тогда сама программа удалит ссылки в других таблицах. Если вы сами хотите такие ключи писать можете напоротся когда Галка захочет удалить запись в таблице а СУБД уже постаралось и удалило и Галка до конца транзакцию не доведет.
А также процедуры, функции и т.д.
делаю випом с командной. таблицы добавил нормально!
Результат: "Не могу блокировать базу данных для модификации структуры таблицы Table1" код[94]
Это почему???
Код: Выделить всё
alter table Table1
foreign key K01
references Table2
primary key k01
restrict
;
Это почему???