Страница 1 из 3
					
				Как корректно добавить новую таблицу?
				Добавлено: 15 мар 2007, 08:36
				 Alexander
				Нужно в Оракл добавить новую таблицу, чтобы она была видна vip-ом... Добавил SQL скриптом, пишет, что не может открыть таблицу....
Как бороться?
			 
			
					
				
				Добавлено: 15 мар 2007, 09:11
				 Alexander
				при опытке вставить випом пишет "ошибка 46, не могу вставить"...
Код: Выделить всё
create table TestTable "TestTable"
With Replace
(
  NumRef     :  longint       "F1",
  Memo       :  lvar          "F2"
)
with index
(
   TestTable00 = NumRef(Unique)
);
 
			
					
				
				Добавлено: 15 мар 2007, 09:55
				 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 не пойдет работать, пока вы ее на место не поставите. Это кстати учтите и при проведении конверторов. Часть из них требуют подсовывания нового словаря из образца - потом его нужно будет тоже изменять.
			 
			
					
				
				Добавлено: 15 мар 2007, 10:22
				 Alexander
				Почему контрольную сумму нужно сохранять, а потом назад перезаписывать? Разве она не должна пересчитываться? Расскажите, плз, по подробнее про контрольную сумму и как она(с ней) работать. 

 
			
					
				
				Добавлено: 15 мар 2007, 11:01
				 edward_K
				увидите в процессе  
 
 
пока просто запишите ее значение. На то она и контрольная, что проверяется при запуске процессов, при этом для каких то хватит 0 чтобы запуститься, а каким то нужно значение соответсвующее версии( а оно у вас измениться). И вообще - поищите на форуме про добавление своих таблиц.
 
			
					
				
				Добавлено: 16 мар 2007, 09:32
				 Goblin
				DictTypes.Def в принципе можно и не подключать - там только макроопределения основных непримитивных типов и обойтись можно без него.
А насчет кода таблиц - тут сложнее . 
Диапазон таблиц для пользователей был раньше выделен с 31500 по 31999 (до Атлантиса 3.03.19 включительно, дальше - не в курсе, не долши мы до них).
			 
			
					
				
				Добавлено: 22 мар 2007, 10:20
				 Alexander
				можно ли установить TABLESPACE для создаваемой таблицы??
сделать каскадное удаление?
как добавлять триггеры: SQL, или опять как-то випом??
			 
			
					
				
				Добавлено: 22 мар 2007, 11:29
				 oiko
				установить TABLESPACE можно.
удаляйте випом как и создавали
триггеры при помощи скл вип триггеры делать не умеет.
			 
			
					
				
				Добавлено: 22 мар 2007, 11:41
				 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)?
 
			 
			
					
				
				Добавлено: 22 мар 2007, 15:02
				 oiko
				Нет схема одна иначе Галка этих таблиц не увидит. Создаете отдельное табличное пространство со своими файлами. Убиваете в старом таблицу создаете в новом и вкачиваете данные.
Удаляйте данные в самой Галактике - по идее тогда сама программа удалит ссылки в других таблицах. Если вы сами хотите такие ключи писать можете напоротся когда Галка захочет удалить запись в таблице а СУБД уже постаралось и удалило и Галка до конца транзакцию не доведет.
А также процедуры, функции и т.д.
			 
			
					
				
				Добавлено: 22 мар 2007, 15:32
				 Alexander
				делаю випом с командной. таблицы добавил нормально!
Код: Выделить всё
alter table Table1
   foreign key K01
   references Table2
   primary key k01
   restrict
;
Результат: "Не могу блокировать базу данных для модификации структуры таблицы Table1" код[94]
Это почему???  

 
			
					
				
				Добавлено: 22 мар 2007, 15:37
				 oiko
				Это тебе так Галка ругается?
			 
			
					
				
				Добавлено: 23 мар 2007, 08:01
				 Alexander
				да
			 
			
					
				
				Добавлено: 23 мар 2007, 09:58
				 Alexander
				разобрался... надо было разогнать всех... странно, почему нужен монопольный доступ для создания связей...
			 
			
					
				
				Добавлено: 05 апр 2007, 14:21
				 Alexander
				Таблицы добавились, НО! править их можно только с правами админа. Как давать права? SQL grand делать, или как-то средствами саппорта....