SQL触发器,检查是否输入了某个值

时间:2012-09-06 11:35:41

标签: sql sql-server sql-server-2008

INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

现在要检查一下:

如果插入的value1 = null,则将其更改为0

如何通过触发器进行操作?我用谷歌搜索了一些例子,我从来没有做过触发器,所以它相当令人困惑。

到目前为止只有这个:

CREATE TRIGGER testTrigger
ON myTable
AFTER INSERT, UPDATE, DELETE

3 个答案:

答案 0 :(得分:12)

您可以添加默认值。这就是新列的完成方式。对于现有的,您应该添加约束。检查 更新2

ALTER TABLE table_name 
ADD column1 int NOT NULL DEFAULT(0)

Add a column with a default value to an existing table in SQL Server

<强>更新

要设置默认值,首先应更新NULL值。

UPDATE table_name 
SET column1 = 0
WHERE column1 IS NULL

更新2:

尝试添加约束

ALTER TABLE table_name 
ADD CONSTRAINT DF_column1 DEFAULT 0 FOR column1 

答案 1 :(得分:10)

你可以在触发器中写下这个:

UPDATE T SET value1 =0
FROM   table_name T
JOIN   INSERTED I
ON     T.<id>=I.<id>
WHERE  I.value1 is null

只能在触发器中访问的INSERTED表将存储已插入的值..

答案 2 :(得分:1)

INSERTED

上使用ISNULL
 SELECT ISNULL(INSERTED,0) FROM INSERTED