Лучший способ предотвратить обновление - PullRequest
0 голосов
/ 04 августа 2010

У меня есть ситуация, когда мы хотим предотвратить обновление таблицы для определенного сценария.

Так что для 95% обновлений я бы хотел, чтобы обновление проходило как обычно и обновляло нужные поля.... за эти 5% я хочу предотвратить обновление.Это будет основано на данных, переданных в обновлении, а также на том, что в настоящее время заполняется в таблице.

Так что хорошим примером является то, что пользователь отправил свое время на сегодня.Если они повторно отправляют свое время, я не хочу, чтобы БД позволила этому обновлению произойти, потому что таблица времени для этого пользователя пометила, что они уже отправили свое время, и поле времени НЕ НЕДЕЙСТВИТЕЛЬНО.

Я былиграя с триггерами для этого, и кажется, что триггер INSTEAD OF позволит мне справиться с этим ... в основном, только обновление будет происходить, если этот критерий верен.

Есть мысли?Я ценю любые идеи.

(Дайте мне знать, если это ясно)

РЕДАКТИРОВАТЬ: Я прошу прощения ... это был, вероятно, не хороший пример.Мы повторно используем sproc-обновление для выполнения множества различных обновлений, поэтому оно довольно общее.Я хотел выяснить, каков наилучший подход для тех случаев, когда я не хочу, чтобы обновление выполнялось.Использование триггера было в основном защитой от случайного перезаписи ранее введенных данных.Спасибо за ввод

** EDIT2: ** Спасибо всем ... после обдумывания этого, Мартин прав, я должен просто встроить логику в sproc.Мне сказали, что они хотят использовать триггер, чтобы справиться с этим, но вы все правы ... это просто неправильный способ справиться с этим.Еще раз спасибо за вашу помощь.

Спасибо,

S

1 Ответ

2 голосов
/ 04 августа 2010

Вам не нужен триггер для этого.например, что-то вроде

UPDATE Users 
 SET timefield = @timefield
WHERE UserId = @UserId AND [Day]=@day AND timefield IS NULL

будет работать для вашего примера.Затем вы можете проверить затронутые строки, чтобы увидеть, действительно ли что-то было обновлено или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...