Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2012, 18:35   #1
Aleksandraaa
Пользователь
 
Регистрация: 24.09.2012
Сообщений: 12
По умолчанию Триггеры

Есть таблица "Касса"(nom_kas_ord, vid, kod_post, kod_prod, summa, data_oplati) как создать триггер на то, чтобы столбец "vid" мог принимать значение только ПКО или РКО. А столбцы "kod_prod" и "kod_post" сразу оба не могли принимать нулевое значение, только или один, или второй?
Aleksandraaa вне форума Ответить с цитированием
Старый 09.12.2012, 18:41   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вам не важно для какой СУБД триггер? Синтаксиса для любой СУБД не существует в природе
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.12.2012, 18:45   #3
Aleksandraaa
Пользователь
 
Регистрация: 24.09.2012
Сообщений: 12
По умолчанию

для sgl server 2000
Aleksandraaa вне форума Ответить с цитированием
Старый 09.12.2012, 19:05   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если до завтра подождете, напишу. Сейчас нет под рукой сервера, да и лень извилины напрягать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.12.2012, 10:07   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Триггер примерно такой
Код:
CREATE TRIGGER Tr1 ON Касса FOR INSERT,UPDATE AS
BEGIN
  IF EXISTS(SELECT * FROM inserted WHERE not vid IN ('РКО','ПКО') OR (kod_prod=0 AND kod_post=0))
  BEGIN
    RAISERROR 13000 'Ошибка данных'
    ROLLBACK TRANSACTION
  END
END
И без триггера можно спокойно обойтись
Код:
ALTER TABLE Касса ADD CONSTRAINT Касса1 CHECK (vid IN ('РКО','ПКО'))
ALTER TABLE Касса ADD CONSTRAINT Касса2 CHECK (kod_prod<>0 OR kod_post<>0)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
триггеры brans SQL, базы данных 1 14.12.2011 10:18
Триггеры Arassir SQL, базы данных 3 05.07.2011 11:18
Триггеры JoyStick 0_o Помощь студентам 4 01.06.2011 12:13
Триггеры JoyStick 0_o SQL, базы данных 0 01.06.2011 10:24
Триггеры МартинИ SQL, базы данных 4 23.12.2010 20:12