2013-06-12 51 views
1

我在为我的数据库创建触发器时遇到问题。用自动增量值触发更新另一个表

我有两张桌子,叫他们A和AHistory。

A有一个ID和一个值。

我希望AHistory记录设定时间的值和日期。

AHistory具有自动增加的ID,值和时间戳。

这是据我已经得到了:

CREATE TRIGGER Atrigger 
    ON A 
    AFTER INSERT 
AS 
BEGIN  
    INSERT INTO AHistory 
    SELECT value FROM INSERTED 
END 
GO 
+0

问题是?你错过了时间戳? 'getdate()'是假设你使用SQL Server的答案。或者它是另一个RDBMS? – fancyPants

回答

0

假设你的数据库架构看起来像

CREATE TABLE a 
    (id int identity primary key, 
    value varchar(32)); 

CREATE TABLE ahistory 
    (id int identity primary key, 
    aid int, value varchar(32), 
    eventdate datetime); 

,您的触发可能看起来像

CREATE TRIGGER atrigger ON A 
AFTER INSERT AS 
    INSERT INTO ahistory (aid, value, eventdate) 
    SELECT id, value, GETDATE() FROM INSERTED; 

这里是SQLFddle d emo

+0

谢谢,但问题是A中的ID和AHistory中的ID不一样。 –

+0

在我的例子**中,它们不是一样的**。它们碰巧具有相同的值,因为它们被定义为身份。因此请看看sqlfiddle并解释你的问题到底是什么。 – peterm