Предположим, что у нас есть таблица с именем StudentAccount
с столбцами SID
(идентификатор студента) и AmountOwing
. Мы не можем удалить учетную запись из системы, если ученик ничего не должен на их счете. (Это AmountOwing = $0.00
).Как предотвратить стирание строки в зависимости от значения столбца
Например, таблица может выглядеть следующим образом:
SID | Amount Owing
-------+--------------
32415 | $30.00
39872 | $0.00
35135 | $3200.00
В этом случае, мы можем удалить только строку 2.
Есть ли способ принудить это ограничение к таблице с использованием синтаксиса SQL MS SQL Server 2012 SQL (чтобы необразованный пользователь не случайно удалил непустую учетную запись)?
Я думаю, вам нужно использовать триггер 'before delete' для реализации этого. –
использовать перед триггером удаления, проверяя значение, если нет 0 отменить действие удаления, однако каскадные удаления не могут быть активированы для этого. http://msdn.microsoft.com/en-us/library/ms189799.aspx – xQbert
@xQbert Что вы подразумеваете под удалением каскада, не может быть включено? Вы имеете в виду, что какая-то другая таблица не может каскадно удалить таблицу, в которую я хочу включить триггер? Или таблица, в которую я хочу включить триггер, не может каскадировать удаление других таблиц? Или каскад не удаляется во всей базе данных? – Maria