触发不工作,无法弄清楚原因

时间:2011-06-15 14:12:14

标签: sql sql-server-2005

我正在使用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'附近。

我试过解决它,但似乎没有任何效果。

3 个答案:

答案 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)

在指定列的相应数据类型中提供值。