我想创建一个不允许从USA
通过客户端的触发器。
所以我的代码是:
CREATE TRIGGER location_tr
ON t1 FOR INSERT, UPDATE
AS
BEGIN
DECLARE @country VARCHAR(50)
SET @country = (SELECT country FROM inserted);
IF @country <> 'USA'
BEGIN
PRINT 'You cant add user out of USA!'
ROLLBACK TRANSACTION
END
ELSE
COMMIT TRANSACTION
END
现在,我无法在表格t1上执行任何UPDATE
或INSERT
。
我想我的COMMIT/ROLLBACK
命令出错了。需要帮忙。感谢
答案 0 :(得分:2)
第一个问题是您的触发器不支持多行。您应该使用EXISTS而不是设置变量的值。这些方面的东西。
CREATE TRIGGER location_tr ON t1
FOR INSERT, UPDATE AS
BEGIN
IF EXISTS(select * from inserted where Country <> 'USA')
BEGIN
PRINT 'You cant add user out of USA!'
ROLLBACK TRANSACTION
END
END