我正在使用SQL Server 2005,当创建触发器时,我收到以下错误:
代码
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE TRIGGER dbo.dublicator
ON dbo.PLACE_ORDER
FOR INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
INSERT INTO dbo.ADAPT_DR.DEBTS(CLIENT_CODE,CLIENT_NAME,CHARGES)
END
GO
当我执行时,我收到以下错误:
Msg 156,Level 15,State 1,Procedure dublicator,第17行语法不正确 在关键字'END'附近。
我试过解决它,但似乎没有任何效果。
答案 0 :(得分:3)
由于这是一个触发器,我假设进入第二个表的值将来自插入。声明使用VALUES
的答案是有效的SQL语法,但不是您要查找的内容。您将需要使用inserted
魔术表。
INSERT INTO dbo.ADAPT_DR.DEBTS(CLIENT_CODE,CLIENT_NAME,CHARGES)
SELECT CLIENT_CODE, CLIENT_NAME, CHARGES
FROM inserted
这假设两个表中的列名相同。如果您有任何问题,请回复。
答案 1 :(得分:1)
你的insert
声明错了 - 你说插入表debts
但不告诉它插入什么。我的建议是阅读并获得一些基本的SQL知识(选择,插入,更新)。
答案 2 :(得分:0)
您的INSERT
声明不完整。它应该是这样的:
INSERT INTO dbo.ADAPT_DR.DEBTS(CLIENT_CODE,CLIENT_NAME,CHARGES)
values (value1, value2, value3)
在指定列的相应数据类型中提供值。