Пример создания триггера

AlexanderVS
Дата: 02.02.2001 04:50:57
Помогите пожалуйста примером создания триггера, например чтобы при удалении записи из таблицы с PK удалялись соответствующие записи из таблица с FK.

Всех благ, Александр.
AnKa
Дата: 02.02.2001 10:29:54
Вот реально работающий триггер:

CREATE TRIGGER AK_REFHDR_DEL ON AK_REFHDR
FOR DELETE
AS
DELETE AK_REFDET
FROM deleted del, AK_REFDET D
WHERE del.ID=D.LINK_ID
SergSuper
Дата: 02.02.2001 11:05:03
... и всё это будет работать при условии что поля не связаны ключами. Иначе невозможно будет удалить запись из первичного ключа, когда есть соответствующая запись во вторичном - триггер то вызывается после.
AnKa
Дата: 02.02.2001 11:17:12
Для того, чтобы не возникало проблемки с внешним ключом, необходимо в его свойствах убрать галочку "Enable relationship for INSERT and UPDATE". И все будет "чики-пуки". У меня так и работает.
Alex
Дата: 05.02.2001 14:58:25
Я не понял.
Если отключить foreign key, то
1. возникает вероятность нарушения целостности данных
2. зачем тогда нужен foreign key?
SergSuper
Дата: 05.02.2001 15:38:06
Точнее сказать:
"1. возникает ВОЗМОЖНОСТЬ нарушения целостности данных"
Т.е. всю заботу о целостности программист берет на себя. foreign key нужет наверное только чтобы не забыть о этом
Dmitry
Дата: 05.02.2001 17:41:05
В MSSQL 7.0. нет возможности каскадного удаления. Оно, как уже говорилось выше, может быть сделано с использованием триггеров 'вручную', но только в случае отсутствия Foreign Key-ев. Ну несовместимы в 7.0. внешние ключи и триггеры. Поэтому приходится выбирать - либо убирать внешние ключи и спокойно использовать триггеры, либо оставлять ключи и производить удаления в обратном порядке, т.е. сначала из зависимых таблиц удалять все связанные записи, а уже потом из 'главных'. В других СУБД, в том числе в SQL 2000 каскадное удаление поддерживается.