Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подскажите  [new]
Papadzyan
Member

Откуда:
Сообщений: 6
Подскажите почему нельзя так написать триггер на вставку значения по умолчанию в то поле, которое имеет значение NULL
ALTER TRIGGER [dbo].[T_tblPerson_SetDefault] 
   ON  [dbo].[tblPerson] 
   FOR INSERT,UPDATE
AS 
SET NOCOUNT ON
/*Триггер, который вставляет значение по умолчанию*/
BEGIN
   if (SELECT COUNT(*) FROM  inserted WHERE (inserted.EGE=NULL))!=0
   begin
	UPDATE tblPerson
	SET tblPerson.EGE = 1 FROM tblPerson, inserted WHERE (tblPerson.EGE=NULL AND tblPerson.PersonID=inserted.PersonID)
	end
END
1 ноя 15, 18:59    [18355970]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35380
Блог
Papadzyan,

вопрос с собеседования?
1 ноя 15, 19:03    [18355981]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите  [new]
Papadzyan
Member

Откуда:
Сообщений: 6
нет конечно, решил что такой триггер нужен, написал - не работает, решил выяснить почему - не нашел инфы.
1 ноя 15, 19:07    [18355993]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
Papadzyan
Подскажите почему нельзя так написать триггер на вставку значения по умолчанию в то поле, которое имеет значение NULL
Сравнение поля с NULL пишется как "поле IS NULL", а не "поле=NULL" ... если не баловаться с установкой set ansi nulls.
А для записи в поле постоянного значения по умолчанию триггер не нужен.
1 ноя 15, 19:15    [18356013]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите  [new]
Papadzyan
Member

Откуда:
Сообщений: 6
Serg_77m
Papadzyan
Подскажите почему нельзя так написать триггер на вставку значения по умолчанию в то поле, которое имеет значение NULL
Сравнение поля с NULL пишется как "поле IS NULL", а не "поле=NULL" ... если не баловаться с установкой set ansi nulls.
А для записи в поле постоянного значения по умолчанию триггер не нужен.

Спасибо, а то я запутался с IS NULL и ISNUL, ниче не понял и вставил стандартное присваивание. А по поводу того что триггер не нужен я и сам знаю, но мне нужно для количество, поэтому высасываю из пальца:)
1 ноя 15, 19:35    [18356079]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Papadzyan
мне нужно для количество
Чо??
1 ноя 15, 19:39    [18356093]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите  [new]
Papadzyan
Member

Откуда:
Сообщений: 6
iap
Papadzyan
мне нужно для количество
Чо??

Для количества*
Курсовой проект:)
1 ноя 15, 19:43    [18356109]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите  [new]
Serg_77m
Member

Откуда: Донецк
Сообщений: 237
iap
Papadzyan
мне нужно для количество
Чо??
Наверное, платят за количество триггеров в базе
1 ноя 15, 19:44    [18356110]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите  [new]
ALTER TRIGGER
Guest
Papadzyan,

это триггер который AFTER, все уже случилось.
not null уже ругнулся
1 ноя 15, 20:37    [18356280]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите  [new]
DNShark
Member

Откуда:
Сообщений: 238
Papadzyan,

можно написать

if exists(select inserted.EGE From inserted   where inserted.EGE is NULL)
begin
  ...
end
2 ноя 15, 11:06    [18357731]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить