SQL Server 2008 触发器之插入前触发器

3

我对SQL非常陌生,很抱歉这是非常基础的知识。我的问题如下。

我有一张名为Group的表格,其中包含两列minimumValmaximumValminimumVal始终应小于maximumVal。我希望在向表格中插入新记录之前检查此条件。如果此条件失败,则不应将数据插入数据库。

所以根据我的理解,我考虑使用触发器,但不知道如何编写。目前为止,我写的是:

CREATE TRIGGER tr_Group
ON Table_Group
for INSERT
AS  
????

请给我建议。

1
在这种情况下更好的解决方案是使用CHECK约束。而且SQL Server没有before触发器,只有INSTEAD OF触发器 - Pondlife
1个回答

15

我建议您使用检查约束来实现这一点:

ALTER TABLE dbo.Table_Group ADD CONSTRAINT CK_Group
    CHECK (minimumVal < maximumVal)

如果您仍然想使用触发器,则需要一个INSTEAD OF触发器

CREATE TRIGGER tr_Group ON Table_Group
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON
    INSERT INTO dbo.Table_Group
    SELECT *
    FROM INSERTED
    WHERE minimumVal < maximumVal
END

1
谢谢。它起作用了。我使用了“检查约束”。如果检查约束失败,有没有设置操作(例如:显示错误消息)的方法? - New Developer
1
@NewDeveloper - 触发器可以检查违反规则的数据,并使用RaIsError来表示它的不满。 - HABO

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