SQL触发器,用于在插入时向具有相同结构的表中添加新记录
我正在尝试创建SQL触发器,它将新记录添加到通过网页进行插入的同一个表中。我不确定如何实现它,但我尝试了以下查询SQL触发器,用于在插入时向具有相同结构的表中添加新记录,sql,sql-server,tsql,triggers,sql-server-2012,Sql,Sql Server,Tsql,Triggers,Sql Server 2012,我正在尝试创建SQL触发器,它将新记录添加到通过网页进行插入的同一个表中。我不确定如何实现它,但我尝试了以下查询 CREATE trigger [dbo].[trgI_DealsDoneInserRecord] on [dbo].[Terms] after insert As Insert into DealsDone (Company,Grade,Term,Pipeline,[Index],Volume,Price,[Type],C
CREATE trigger [dbo].[trgI_DealsDoneInserRecord]
on [dbo].[Terms]
after insert
As
Insert into DealsDone
(Company,Grade,Term,Pipeline,[Index],Volume,Price,[Type],CounterParty,
TermID,GradeID,CPID,Locked,Product)
VALUES
(SELECT Company,Grade,Term,Pipeline,[Index],Volume,Price,[Type],CounterParty,
TermID,GradeID,CPID,Locked,Product FROM inserted)
END
上述查询在VALUES
中的SELECT
语句中抛出了一个错误
我可以知道一种实现方法吗?有一个语法问题,而且您缺少BEGIN 基本语法是
INSERT INTO table2 (column_name(s))
SELECT column_name(s)
FROM table1;
所以试试这个
CREATE trigger [dbo].[trgI_DealsDoneInserRecord]
on [dbo].[Terms]
after insert
As
BEGIN
Insert into DealsDone
(Company,Grade,Term,Pipeline,[Index],Volume,Price,[Type],CounterParty,
TermID,GradeID,CPID,Locked,Product)
SELECT Company,Grade,Term,Pipeline,[Index],Volume,Price,[Type],CounterParty,
TermID,GradeID,CPID,Locked,Product
FROM inserted
END
请参阅:-尝试以下操作:
CREATE trigger [dbo].[trgI_DealsDoneInserRecord]
ON [dbo].[Terms]
AFTER INSERT
As
BEGIN
INSERT INTO DealsDone
(Company,Grade,Term,Pipeline,[Index],Volume,Price,[Type],CounterParty,
TermID,GradeID,CPID,Locked,Product)
SELECT Company,Grade,Term,Pipeline,[Index],Volume,Price,[Type],CounterParty,
TermID,GradeID,CPID,Locked,Product FROM inserted
END
虽然我通常反对使用
SELECT*
,但在这种情况下,这似乎是一个好处:
- 通过不指定字段,您可以在添加、删除甚至重命名字段时自动说明表中的更改,而无需更新此触发器
- 如果其中一个表已更新,而另一个表未更新,并且结构不同,这将帮助您捕获架构更新中的错误。如果发生这种情况,插入操作将失败,您不必担心清理坏数据
CREATE TRIGGER[dbo]。[trgI\u DealsDoneInserRecord]
关于[dbo]。[条款]
插入后
作为
不计数;
插入[交易通]
挑选*
从插入;
您的语法不正确。它应该看起来像INSERT-INTO-Table(col1,col2,…,coln)从INSERT中选择col1,col2,…,coln
问题的标题是“INSERT-INTO-same Table”,但触发器定义显示了不同的表。是哪一个?还是说一张不同的桌子有相同的结构?如果是这样,它是否总是具有相同的结构?我想有人编辑了我的问题并删除了,我发现它是由您编辑的。请返回并检查,感谢您让我知道我的语法是错误的[但是它在“END”附近说的语法不正确。@Dev您刚刚忘记了一些方括号。现在应该可以了。哦,是的,我错过了顶部的BEGIN