Sql server 在具有主键的表上插入触发器后
我有以下两个表格:Sql server 在具有主键的表上插入触发器后,sql-server,triggers,primary-key,Sql Server,Triggers,Primary Key,我有以下两个表格: 订单包含以下列:订单ID作为主键,订单名称等 Delivery包含以下列:DeliveryID作为主键、OrderID、date等 我在Order表上编写了更新后触发器,它在Delivery表中插入一个新行,并用OrderID填充它: create Trigger CopyOrderID_To_DeliveryTable on Order for insert as begin declare @ID int select @ID = REQUESTID
订单
包含以下列:订单ID
作为主键,订单名称
等Delivery
包含以下列:DeliveryID
作为主键、OrderID
、date
等Order
表上编写了更新后触发器,它在Delivery
表中插入一个新行,并用OrderID
填充它:
create Trigger CopyOrderID_To_DeliveryTable
on Order
for insert
as
begin
declare @ID int
select @ID = REQUESTID from inserted
insert into Delivery (OrderID)
values (@ID)
end
这应该可以正常工作,但这里的问题是Delivery
表中的DeliveryID
列是不可为空的PK。因此,每当我尝试更新Order
表时,我都会收到一条错误消息,Delivery
表中的DeliveryID
不允许空值
如何在不更改DeliveryID
列的情况下删除此邮件
屏幕截图显示DeliveryID
列属性:
触发器是高度特定于供应商的-因此请添加一个标记,以指定您是否正在使用
mysql
,postgresql
,sql server
,oracle
或db2
或其他完全不同的东西。为什么要自动将记录插入到交货
中?BC我有订单需要多次交货。