2014-10-16 3 views
0

У меня есть таблица вроде этого:добавить значения в зависимости от состояния SQL-сервера

create table example(
id char(1), 
color varchar, 
col_binary binary); 

У меня уже есть хранимая процедура, и я хочу через хранимую процедуру, которая будет возвращать мне цвет, например " синий ", то столбец col_binary принимает значения 1, а с другим цветом, например" красный "col_binary принимает значение 0. Я думаю, мне нужен триггер.

+0

Извините, но ваш вопрос очень трудно понять, вы можете улучшить английский язык, пожалуйста? Кроме того, вы говорите, когда вы INSERT, вы хотите, чтобы 'col_binary' стал определенным значением? – DavidG

+0

Почему бы не иметь отдельную таблицу, в которой хранится двоичное значение для каждого цвета, тогда вы можете присоединиться к этому, чтобы получить свой двоичный столбец, вместо этого добавить [вычисленный столбец] (http://technet.microsoft.com/en-us/ библиотека/ms191250% 28v = sql.105% 29.aspx) - например 'ALTER TABLE пример ADD col_binary AS CASE Color WHEN 'Blue' THEN 1 WHEN 'Red' THEN 0 END;' – GarethD

+1

Пожалуйста, помните, что при объявлении 'color varchar' длина столбца' 1'! Вы должны всегда указывать длину 'varchar (10)', чтобы предотвратить усечение – NickyvV

ответ

0

Вы можете достичь его, добавив триггер, как это

Create Trigger [Add_LTD] on Example 
After Insert As 
BEGIN 
Update Example set Example.[col_binary]=case when Example.[Color]='Red' then 1 else 0 END from Inserted 
where Example.id=Inserted.id 
END; 

DEMO

Смежные вопросы