powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Если способ в t1 вставить запись?
26 сообщений из 26, показаны все 2 страниц
Если способ в t1 вставить запись?
    #37045695
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CREATE TABLE T1 (
ID INTEGER NOT NULL,
FK INTEGER NOT NULL
);
CREATE TABLE T2 (
ID INTEGER NOT NULL,
FK INTEGER NOT NULL
);
ALTER TABLE T1 ADD CONSTRAINT PK_T1 PRIMARY KEY (ID);
ALTER TABLE T2 ADD CONSTRAINT PK_T2 PRIMARY KEY (ID);
ALTER TABLE T1 ADD CONSTRAINT FK_T1 FOREIGN KEY (FK) REFERENCES T2 (ID);
ALTER TABLE T2 ADD CONSTRAINT FK_T2 FOREIGN KEY (FK) REFERENCES T1 (ID);
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37045698
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE T1 (
  ID INTEGER NOT NULL,
  FK INTEGER NOT NULL
);
CREATE TABLE T2 (
  ID INTEGER NOT NULL,
  FK INTEGER NOT NULL
);
ALTER TABLE T1 ADD CONSTRAINT PK_T1 PRIMARY KEY (ID);
ALTER TABLE T2 ADD CONSTRAINT PK_T2 PRIMARY KEY (ID);
ALTER TABLE T1 ADD CONSTRAINT FK_T1 FOREIGN KEY (FK) REFERENCES T2 (ID);
ALTER TABLE T2 ADD CONSTRAINT FK_T2 FOREIGN KEY (FK) REFERENCES T1 (ID); 
?
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37045709
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет. циклическая ссылка. что раньше - курица или яйцо?
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37045711
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и тема называется "Есть ли способ в T1 вставить запись?"

p.s. После Нового Года только начал отходить...
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37045714
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvнет. циклическая ссылка. что раньше - курица или яйцо?

Для интересу: а в какой-нибудь СУБД такое возможно?
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37045734
olegenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде Таблоид что-то такое запрашивал, типа, чтобы ссылочная целостность проверялась непосредственно перед коммитом, а до - можно было в "измененных" записях держать любой "мусор". Вроде в Oracle есть такая настройка.

С другой стороны, хоть это и изврат, ты можешь в обе таблицы добавить по одной записи ДО наложения ограничений. Потом делать вставку с этими значениями по умолчанию, после чего - update. Путь очень тернистый, чреватый ошибками.
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37045744
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__Ну и тема называется "Есть ли способ в T1 вставить запись?"

Нету способа. Ибо нефиг. Убери у FK NOT NULL и способ появится.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37045954
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov> Нету способа. Ибо нефиг. Убери у FK NOT NULL и способ появится.

Способ то есть - вставляешь в обе (или одну) таблицы запись с ID "-1"
и ссылаешься на нее, потом апдейтишь. То же самое раньше и вместо
Null-ов использовали. Но для сегодняшних версий "нефиг" поддерживаю.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37045958
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамСпособ то есть - вставляешь в обе (или одну) таблицы запись с ID "-1"

И получаешь в ответ ошибку нарушения FK. Ты в топике что, читаешь только мои сообщения?
olegenty может обидеться.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37046016
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov> И получаешь в ответ ошибку нарушения FK.
Dimitry Sibiryakov> Ты в топике что, читаешь только мои сообщения?
Dimitry Sibiryakov> olegenty может обидеться.

C чего вдруг ошибку нарушения FK ? Я лишь дополнил
ответ olegenty подсказкой о "фиктивной" записи, чтобы
не приходилось делать ссылки на "чужие" записи.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37046024
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамC чего вдруг ошибку нарушения FK ? Я лишь дополнил ответ olegenty подсказкой о "фиктивной"
записи, чтобы не приходилось делать ссылки на "чужие" записи.

А какая разница между "чужими" записями и "фиктивными"? И что именно ты хотел дополнить в
этом ответе:
olegentyможешь в обе таблицы добавить по одной записи ДО наложения ограничений.
Потом делать вставку с этими значениями по умолчанию, после чего - update.
этим:
Гаджимуратов Рустамвставляешь в обе (или одну) таблицы запись с ID "-1"
и ссылаешься на нее, потом апдейтишь
Бог меня побей если я вообще вижу хоть какую-то разницу между этими двумя высказываниями.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37046034
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не видишь - значит, и нет, пусть будет по-твоему.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37214432
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в такую?
Код: plaintext
1.
2.
3.
4.
5.
CREATE TABLE TEST (
    F_FROM  INTEGER NOT NULL,
    F_TO    INTEGER NOT NULL
);
ALTER TABLE TEST ADD CONSTRAINT TEST$PK PRIMARY KEY (F_FROM, F_TO);
ALTER TABLE TEST ADD CONSTRAINT TEST_TEST FOREIGN KEY (F_TO, F_FROM) REFERENCES TEST (F_FROM, F_TO) ON DELETE CASCADE;
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37214439
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто тут?!
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37214441
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то я не улавливаю смысл такого ФК. наверное, получится вставить 1-1, 2-2 и так далее.
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37214445
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

Надо вот это вставить:
Код: plaintext
1.
2.
3.
4.
execute block as
begin
  insert into test (f_from, f_to) values ( 1 ,  1 );
  insert into test (f_from, f_to) values ( 2 ,  1 );
end
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37214450
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой, ошибся:
Код: plaintext
1.
2.
3.
4.
execute block as
begin
  insert into test (f_from, f_to) values ( 1 ,  2 );
  insert into test (f_from, f_to) values ( 2 ,  1 );
end
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37214462
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну не вставится же. при первой вставке 1-2 фк проверит наличие 2-1, а такого еще нет.
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37214731
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Ага, *ля!" - злорадно сказали суровые сибирские мужики.
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37214779
Esperito
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__Для интересу: а в какой-нибудь СУБД такое возможно? Тынц
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37214987
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможно, с deferred fk, когда он проверяется по коммиту.
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37215666
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А планируются ли deffered fk в fb3?
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37215754
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а зачем? твои извраты реализовывать? :-)
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37215759
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

Да мне-то в принципе все равно, я могу и без этого fk жить. Просто с ним бы было логичнее.
...
Рейтинг: 0 / 0
Если способ в t1 вставить запись?
    #37215832
olegenty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При такой реализации значит, что в f_from и f_to - это один и тот же объект предметной области.
Следовательно, он должен быть вынесен в отдельную таблицу, и именно на неё должен ссылаться FK и из f_from, и из f_to.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Если способ в t1 вставить запись?
    #38826825
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Avenger__
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE T1 (
  ID INTEGER NOT NULL,
  FK INTEGER NOT NULL
);
CREATE TABLE T2 (
  ID INTEGER NOT NULL,
  FK INTEGER NOT NULL
);
ALTER TABLE T1 ADD CONSTRAINT PK_T1 PRIMARY KEY (ID);
ALTER TABLE T2 ADD CONSTRAINT PK_T2 PRIMARY KEY (ID);
ALTER TABLE T1 ADD CONSTRAINT FK_T1 FOREIGN KEY (FK) REFERENCES T2 (ID);
ALTER TABLE T2 ADD CONSTRAINT FK_T2 FOREIGN KEY (FK) REFERENCES T1 (ID); 

?

В тройке теперь такое возможно?
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Если способ в t1 вставить запись?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]