Они это серьезно?

noir
Дата: 18.12.2002 20:14:54
Из BOL:

Disabling a Foreign Key Constraint with INSERT and UPDATE Statements

...Skip...

Note: If you plan to use triggers to implement database operations, you must disable foreign key constraints in order for the trigger to run.


Они это серьезно? Или я чего-то не понял? Если это и в прямь так, то зачем вообще foreign key нужен? Или это можно как-то обойти?
Pavel
Дата: 19.12.2002 06:45:08
Я не уверен точно, так как цитата вырвана из контекста, но скорее всего речь идет о поддержке целостности данных. Ее можно организовать и на триггерах. Это было актуально в 7.0, С появлением в 2K instead триггерорв уже не актуально.
funikovyuri
Дата: 19.12.2002 08:40:13
Имеется в виду instead of тригеры - если Вы их написали, то и поддержание целостности Ваша забота
Kilroy
Дата: 19.12.2002 09:42:18
Все правильно

сначала - instead of trigger
потом - constraint

--модификация данных

потом - after trigger

если модификация данных напорется на constraint, то after триггера дело
не дойдет, и если нужно чтобы он срабатывал - ограничение нужно запрещать
noir
Дата: 19.12.2002 12:12:34
А зачем after должен срабатывать если модификации не было? И будет ли он срабатывать, если модификация по constraint'у прошла?

Если это распространяется только на instead, то это еще более-менее понятно, но неприятный осадок все-таки остался... ((с) анекдот.)

Последний вариант - эту строчку писали все-таки первого апреля :)

Цитата из контекста не выдрана, и взята из BOL к SQL Server 2000. (полный текст страницы в конце.)

Quote:
-----------------------------------------------------------------------------
Disabling a Foreign Key Constraint with INSERT and UPDATE Statements


Select the option to disable a foreign key constraint during INSERT and UPDATE transactions if you know that new data will violate the constraint or if the constraint applies only to the data already in the database.

To disable a foreign key constraint for INSERT and UPDATE statements

In your database diagram, right-click the table containing the foreign key, then select Properties from the shortcut menu.
-or-

Open the Table Designer for the table containing the foreign key you want to modify, right-click in the Table Designer, and choose Properties from the shortcut menu.

Choose the Relationships tab.


Select the relationship from the Selected relationship list.


Clear the Enforce relationship for INSERTs and UPDATEs check box.
After you add or modify data, you should select this option if you want to ensure the constraint applies to subsequent data modifications.

Note If you plan to use triggers to implement database operations, you must disable foreign key constraints in order for the trigger to run.

See Also
Constraints | Foreign Key Constraints

©1988-2000 Microsoft Corporation. All Rights Reserved.
Genady
Дата: 19.12.2002 12:23:10
Вот же ж блин пришлось не полениться и найти это в BOL.
2 noir
Ну и что Вы панику поднимаете? Там всего лишь сказано в каких ситуациях может понадобится отключение FK и ситуация эта весьма проста, Вам надо вставить или обновить данные, но при этом будет нарушена целостность, но Вы об этом знаете. Следовательно нарушение целостности скорее всего будет временным, разумеется если DBA не идиот.
noir
Дата: 19.12.2002 12:43:18
Не понЯл... Да, весь топик был именно про это, но при чем там триггеры?

Естественно, при таком апдейте надо отключить constraint, вне зависимости от того есть там триггеры или нет. Так зачем же добавлять еще и специальное замечание про триггеры?
Genady
Дата: 19.12.2002 13:40:30
Да, весь топик был именно про это, но при чем там триггеры?

Про триггера там всего лишь Note и для того чтобы показать, что вставка и обновление данных может быть и с помощью триггеров.