--示例数据库
用主键外键的完整性约束可以控制数据插入,现在这里演示用触发器来限制插入
--定义触发器
if OBJECT_ID('TR_orders_Insert','TR') IS NOT NULL
DROP TRIGGER TR_orders_Insert;
GO
CREATE TRIGGER TR_orders_Insert ON dbo.orders
AFTER INSERT--触发表完成插入数据以后
AS
--判断插入的数据Custid不存在时执行事务回滚
IF NOT EXISTS(
SELECT * FROM orders od
INNER JOIN inserted as i
on od.orderid=i.orderid
INNER JOIN Customers AS Cu
ON od.CustID=Cu.Custid)
BEGIN
RAISERROR ('拒绝数据插入', 16, 1);
ROLLBACK TRANSACTION;--事务回滚
RETURN;
END;
执行数据插入
--插入数据(customer表中没有custid=10的客户)
insert into orders(custid,orderdate) values(10,'20100511')
--返回结果:
服务器: 消息 50000,级别 16,状态 1,过程 TR_orders_Insert,行 12
拒绝数据插入