现有订单表(订单Id,下单DateTime,产品Id,产品数量,下单客户Id,操作员工Id)
另有发票表(发票Id,发票生成DateTime,订单Id)我想用Trigger实现当Insert into订单的时候,自动同步Insert Into发票表。我现在的代码是:
CREATE TRIGGER [dbo].[发票同步]
ON [dbo].[订单表]
AFTER INSERT
AS
BEGIN
INSERT INTO
发票表(发票Id,发票DateTime,订单Id) 
SELECT ????? FROM inserted
GO我这种写法有问题吗?另外问号的部分我不太了解怎么写,能帮助一下吗?

解决方案 »

  1.   

    CREATE TRIGGER [发票同步]ON [订单表]
    AFTER INSERT
    AS
    BEGIN
    INSERT INTO发票表(发票DateTime,订单Id) 
    SELECT getdate(),订单Id 
    FROM inserted
    end
     --发票ID应该是自增的吧,如果是就不用管
      

  2.   


    我就是在考虑ID怎么处理的事情,因为我以为这个要一一对应呢...看来你的写法不需要插入ID
    那么我是不是要事先设置Auto_Increment那个?我都忘了,不过我还没有在数据库里加入这个。
      

  3.   

    mysql 是auto_increment,mssql 是 identity
      

  4.   

    The select list for the INSERT statement contains fewer items than the insert list. The number of SELECT values must match the number of INSERT columns.插入失败了,说我插入的东西没有和目标表一一对应,应该还是发票的ID没有处理好。
      

  5.   

    发票ID可设置为自增列或GUID列指定默认值为newid()
      

  6.   

    CREATE TRIGGER [dbo].[发票同步] 
    ON [dbo].[订单表] 
    AFTER INSERT
    AS
    BEGIN
    INSERT INTO 发票表(发票Id,发票DateTime,订单Id)  
    SELECT getdate(),订单Id FROM inserted 
    GO 
    --此处发票Id根据你业务情况,可以设置为自增列,那么你要先对发票Id设置自增。