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我有订单需要多次交货。