SQL触发器,检查是否输入了特定值

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

现在需要检查的是:

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

如何通过触发器完成?我在谷歌上搜索了示例,但我从未编写过触发器,所以有些困惑。

到目前为止,我只有这个:

CREATE TRIGGER testTrigger
ON myTable
AFTER INSERT, UPDATE, DELETE
3个回答

14

你可以添加默认值。这是如何为新列完成的。对于现有列,您应该添加约束。请检查更新2

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

在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 

这将添加列,我能否更改列的默认值? - Jaanus
在修改列之后,您应该将column1的值更新为0。请检查更新。 - hgulyan
修改表myTable的列myColumn为varchar(40),非空且默认值为'0',会出现“关键字'DEFAULT'附近有语法错误”的错误。 - Jaanus

12

您可以在触发器中编写以下内容:

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

插入的表只能在触发器内访问,将存储已插入的值。


2

INSERTED 值上使用 ISNULL 函数

 SELECT ISNULL(INSERTED,0) FROM INSERTED

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接