日期:2014-05-17  浏览次数:20471 次

Trigger疑问
现有订单表(订单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



我这种写法有问题吗?另外问号的部分我不太了解怎么写,能帮助一下吗?
------最佳解决方案--------------------
CREATE TRIGGER [发票同步]ON [订单表]
AFTER INSERT
AS
BEGIN
INSERT INTO发票表(发票DateTime,订单Id) 
SELECT getdate(),订单Id 
FROM inserted
end
 --发票ID应该是自增的吧,如果是就不用管
------其他解决方案--------------------
CREATE TRIGGER [dbo].[发票同步] 
ON [dbo].[订单表] 
AFTER INSERT
AS
BEGIN
INSERT INTO 发票表(发票Id,发票DateTime,订单Id)  
SELECT getdate(),订单Id FROM inserted 
GO 
--此处发票Id根据你业务情况,可以设置为自增列,那么你要先对发票Id设置自增。




------其他解决方案--------------------
mysql 是auto_increment,mssql 是 identity
------其他解决方案--------------------
发票ID可设置为自增列或GUID列指定默认值为newid()
------其他解决方案--------------------
引用:
CREATE TRIGGER [发票同步]ON [订单表]
AFTER INSERT
AS
BEGIN
INSERT INTO发票表(发票DateTime,订单Id) 
SELECT getdate(),订单Id 
FROM inserted
end
 --发票ID应该是自增的吧,如果是就不用管


我就是在考虑ID怎么处理的事情,因为我以为这个要一一对应呢...看来你的写法不需要插入ID
那么我是不是要事先设置Auto_Increment那个?我都忘了,不过我还没有在数据库里加入这个。
------其他解决方案--------------------
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没有处理好。