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

现在要检查什么:

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

如何通过触发器做到这一点?我用谷歌搜索了一些例子,但我从来没有做过触发器,所以这很令人困惑。

到目前为止只有这个:

CREATE TRIGGER testTrigger
ON myTable
AFTER INSERT, UPDATE, DELETE
4

3 回答 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 
于 2012-09-06T11:38:51.173 回答
12

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

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

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

于 2012-09-06T11:39:00.300 回答
2

在INSERTED值上使用 ISNULL

 SELECT ISNULL(INSERTED,0) FROM INSERTED
于 2012-09-06T11:42:06.303 回答