Как корректно добавить новую таблицу?

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Как корректно добавить новую таблицу?

Сообщение Alexander »

Нужно в Оракл добавить новую таблицу, чтобы она была видна vip-ом... Добавил SQL скриптом, пишет, что не может открыть таблицу....
Как бороться?
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

при опытке вставить випом пишет "ошибка 46, не могу вставить"...

Код: Выделить всё

create table TestTable "TestTable"
With Replace
(
  NumRef     :  longint       "F1",
  Memo       :  lvar          "F2"
)
with index
(
   TestTable00 = NumRef(Unique)
);
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

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 не пойдет работать, пока вы ее на место не поставите. Это кстати учтите и при проведении конверторов. Часть из них требуют подсовывания нового словаря из образца - потом его нужно будет тоже изменять.
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

Почему контрольную сумму нужно сохранять, а потом назад перезаписывать? Разве она не должна пересчитываться? Расскажите, плз, по подробнее про контрольную сумму и как она(с ней) работать. :?:
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

увидите в процессе :D
пока просто запишите ее значение. На то она и контрольная, что проверяется при запуске процессов, при этом для каких то хватит 0 чтобы запуститься, а каким то нужно значение соответсвующее версии( а оно у вас измениться). И вообще - поищите на форуме про добавление своих таблиц.
Goblin
Местный житель
Сообщения: 474
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Сибирь-матушка
Контактная информация:

Сообщение Goblin »

DictTypes.Def в принципе можно и не подключать - там только макроопределения основных непримитивных типов и обойтись можно без него.
А насчет кода таблиц - тут сложнее .
Диапазон таблиц для пользователей был раньше выделен с 31500 по 31999 (до Атлантиса 3.03.19 включительно, дальше - не в курсе, не долши мы до них).
Питаю патологические отвращение и ненависть в особо тяжелой и крайне запущенной формах к семейству программ Microsoft Business Solution !
Восславим господа Кришну за то, что у нас есть ГАЛАКТИКА !
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

можно ли установить TABLESPACE для создаваемой таблицы??
сделать каскадное удаление?
как добавлять триггеры: SQL, или опять как-то випом??
oiko
Местный житель
Сообщения: 417
Зарегистрирован: 29 мар 2005, 17:49

Сообщение oiko »

установить TABLESPACE можно.
удаляйте випом как и создавали
триггеры при помощи скл вип триггеры делать не умеет.
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

oiko
установить TABLESPACE можно.
как его установить?? Пример создания можно? Вы со схемой не перепутали??
удаляйте випом как и создавали
вы меня не поняли, Пример SQL:

Код: Выделить всё

ALTER TABLE SomeSheme.SomeTable1 ADD (
  CONSTRAINT SomeName 
  FOREIGN KEY (SomeKey) 
  REFERENCES SomeSheme.SomeTable2(SomeKey1), 
    [b]ON DELETE CASCADE[/b]);
При удалении записи из родительской таблицы все дочерние тоже атоматом удаляются.
триггеры при помощи скл вип триггеры делать не умеет.
Последовательности тоже(Create Sequence)?
oiko
Местный житель
Сообщения: 417
Зарегистрирован: 29 мар 2005, 17:49

Сообщение oiko »

Нет схема одна иначе Галка этих таблиц не увидит. Создаете отдельное табличное пространство со своими файлами. Убиваете в старом таблицу создаете в новом и вкачиваете данные.

Удаляйте данные в самой Галактике - по идее тогда сама программа удалит ссылки в других таблицах. Если вы сами хотите такие ключи писать можете напоротся когда Галка захочет удалить запись в таблице а СУБД уже постаралось и удалило и Галка до конца транзакцию не доведет.

А также процедуры, функции и т.д.
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

делаю випом с командной. таблицы добавил нормально!

Код: Выделить всё

alter table Table1
   foreign key K01
   references Table2
   primary key k01
   restrict
;
Результат: "Не могу блокировать базу данных для модификации структуры таблицы Table1" код[94]
Это почему??? :???:
oiko
Местный житель
Сообщения: 417
Зарегистрирован: 29 мар 2005, 17:49

Сообщение oiko »

Это тебе так Галка ругается?
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

да
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

разобрался... надо было разогнать всех... странно, почему нужен монопольный доступ для создания связей...
Alexander
Местный житель
Сообщения: 248
Зарегистрирован: 28 ноя 2006, 13:29

Сообщение Alexander »

Таблицы добавились, НО! править их можно только с правами админа. Как давать права? SQL grand делать, или как-то средствами саппорта....
Ответить