Триггер SQL Server (перед вставкой) для проверки данных? - PullRequest
0 голосов
/ 25 апреля 2018

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

Например:

  • Перед вставкой, когда len (ordernum) <> '6', затем удалите запись.
  • еще вставьте в Table1

?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Триггеры INSTEAD OF заставляют пропустить исходную операцию DML, и они просто выполняют код, предоставленный внутри них.Фактическая операция вставки, удаления или обновления не происходит вообще.Однако у них есть связанные вставленные и удаленные таблицы, имитирующие операцию DML.Вставленные и удаленные таблицы широко используются в операциях внутри триггеров

    --Instead of Trigger
    CREATE TRIGGER BeforeDelete_Trigger ON [dbo].[Order1]
    INSTEAD OF INSERT AS
    BEGIN
     IF (SELECT * FROM Order1 WHERE len(ordernum) <> '6')
     THEN 
    INSERT INTO Order1;
   ELSE
    INSERT INTO Order2 (col 1, col 2) VALUES (inserted.col1, inserted.col2);
     END;
     GO
0 голосов
/ 25 апреля 2018

вы можете создать вместо триггера:

- Создать триггер INSTEAD OF INSERT для таблицы:

CREATE TRIGGER InsteadTrigger on dbo.table1
INSTEAD OF INSERT
AS
BEGIN
  if  len(inserted.ordernum)= 6
     insert into table1 (ordernum,col1, col2) values (inserted.ordernum,inserted.col1, inserted.col2)
--rows that dont have a ordernum length of 6 are not inserted

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