【发布时间】:2016-07-30 18:55:44
【问题描述】:
我有一个这样定义的表
CREATE TABLE [dbo].[ObjectRelationClauses]
(
[Id] INT NOT NULL PRIMARY KEY IDENTITY,
[RelationId] INT NOT NULL,
[OperatorType] NVARCHAR(3) NOT NULL,
[LocalPropertyId] INT NOT NULL,
[ForeignPropertyId] INT NULL,
[ForeignValue] VARCHAR(255) NULL,
[ParentClauseId] INT NULL
)
如果ForeignPropertyId 和ForeignValue 列的值都是null,我需要能够引发错误,否则我想执行该操作。
这是我尝试过的
CREATE TRIGGER [dbo].[Trigger_ObjectRelationClauses]
ON [dbo].[ObjectRelationClauses]
FOR INSERT, UPDATE
AS
BEGIN
SET NoCount ON
IF(ForeignPropertyId IS NULL AND ForeignValue IS NULL)
BEGIN
RAISERROR('Either ForeignPropertyId or ForeignValue must be provided to perform this action!')
END
END
但这给了我一个语法错误。也许,我使用RAISERROR 的方式是错误的。
如何正确添加触发器以验证 INSERT 和 UPDATE 上的数据?
【问题讨论】:
-
在raiserror function 中使用错误严重性或错误编号或编写检查约束而不是触发器
标签: sql sql-server sql-server-2008 triggers ddl