Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Значение по умолчанию при определенном условии  [new]
potrew
Guest
Скажите пожалуйста можно ли зададать значение по умолчанию для столбца при выполнеии опреденного условия, то есть значение равно 1, если значение другого столбца не равно например "Москва"?
30 дек 05, 14:16    [2223947]     Ответить | Цитировать Сообщить модератору
 Re: Значение по умолчанию при определенном условии  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2791
Через триггер присваивать нужное значение.
30 дек 05, 14:20    [2223968]     Ответить | Цитировать Сообщить модератору
 Re: Значение по умолчанию при определенном условии  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Да тут и вычисляемый столбец подойдет.
30 дек 05, 14:23    [2223988]     Ответить | Цитировать Сообщить модератору
 Re: Значение по умолчанию при определенном условии  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2791
tpg
Да тут и вычисляемый столбец подойдет.

Если в первом столбце 1, а во второй ничего не вставляется, то в нем будет 'Москва'.
Если в первом столбце 1, а во второй пишется 'Питер' или 'Тула', то должно быть 'Питер' или 'Тула' (в вычисляемый столцеб уже ничего не запишешь).
Если в первом столбце 2, а во второй ничего не вставляется, то в нем будет null или может быть что-то еще.
30 дек 05, 14:34    [2224035]     Ответить | Цитировать Сообщить модератору
 Re: Значение по умолчанию при определенном условии  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Мне кажется, что автору нужно было примерно вот такое

case when col1='Москва' then 0 else 1 end
30 дек 05, 14:39    [2224057]     Ответить | Цитировать Сообщить модератору
 Re: Значение по умолчанию при определенном условии  [new]
potrew
Guest
tpg
Мне кажется, что автору нужно было примерно вот такое

case when col1='Москва' then 0 else 1 end

Да менно такое, а это только через триггер можно сделать?
30 дек 05, 15:03    [2224149]     Ответить | Цитировать Сообщить модератору
 Re: Значение по умолчанию при определенном условии  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2791
potrew
tpg
Мне кажется, что автору нужно было примерно вот такое

case when col1='Москва' then 0 else 1 end

Да менно такое, а это только через триггер можно сделать?
Если, действительно, только такое, то, как и советовал tpg, сделайте вычисляемый столбец.
30 дек 05, 15:08    [2224158]     Ответить | Цитировать Сообщить модератору
 Re: Значение по умолчанию при определенном условии  [new]
potrew
Guest
если делать столбец чисто вычисляемымы, то потом я не смогу исправить значения, но это нужно так как бывают исключения. Единственный вариант триггер значит да?
30 дек 05, 15:12    [2224173]     Ответить | Цитировать Сообщить модератору
 Re: Значение по умолчанию при определенном условии  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2791
Триггер. Можно запретить прямую вставку/изменение таблицы - только через процедуру, в которой организовать соответствующую логику.
30 дек 05, 15:15    [2224188]     Ответить | Цитировать Сообщить модератору
 Re: Значение по умолчанию при определенном условии  [new]
potrew
Guest
А как в триггере на вставку задать значение этого столбца? ЕСли в inserted менять нельзя поля. Как же еще обратиться
30 дек 05, 15:20    [2224209]     Ответить | Цитировать Сообщить модератору
 Re: Значение по умолчанию при определенном условии  [new]
potrew
Guest
Люди! Помогите! Я не знаю как в триггере обратиться к столбцу
30 дек 05, 15:27    [2224237]     Ответить | Цитировать Сообщить модератору
 Re: Значение по умолчанию при определенном условии  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2791
potrew
Люди! Помогите! Я не знаю как в триггере обратиться к столбцу
Я уже было собрался выключить компьютер.

create table t(city sysname, sign int)
go
create trigger t_ins_trg on t for insert as
  update
    t
  set
    sign = 1
  from
    t join inserted
  on
    t.city = inserted.city and t.city <> 'Москва' and t.sign is null
go

Все: выключаю.
30 дек 05, 15:48    [2224334]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить