头一次接触触发器有几个疑问:
1。在企业管理器中输入如下语句
CREATE TRIGGER tru_Table ON  Table
FOR UPDATE AS
****
***
会出现 “Table”附近有语法错误
2。语句改为如下语句后,提示“必须是批查询中的第一条语句”USE Pubs 
CREATE TRIGGER tru_Table ON  Table
FOR UPDATE AS
****
***
go3。use 和 go 的作用是什么,有没有是否都可以4。以上语句在查询分析器中输入并执行就没有错误,这是为什么?
5。触发器创建完毕后,如何在企业管理器中查询到

解决方案 »

  1.   

    1、Table是表名称吗?Table是SQL中的关键字,如果是表名,那需要用中括号括起来[Table]2、USE Pubs 用户切换到Pubs数据库 后面需要加GO 3、USE 用户上下文将切换到该数据库 GO 代表语句的结束4、?什么没有报错。5、2005在可编程性-》数据库触发器建议你多看看书
      

  2.   

    1。在企业管理器中输入如下语句
    CREATE TRIGGER tru_Table ON  Table
    FOR UPDATE AS
    ****
    ***
    会出现 “Table”附近有语法错误
    ===CREATE TRIGGER tru_Table ON  a
    FOR UPDATE AS
    begin 
    return 
    end
    未发现错误 
    2。语句改为如下语句后,提示“必须是批查询中的第一条语句”USE Pubs 
    CREATE TRIGGER tru_Table ON  Table
    FOR UPDATE AS
    ****
    ***
    go====USE Pubs 
    go
    CREATE TRIGGER tru_Table ON  Table
    FOR UPDATE AS
    ****
    ***
    go3。use 和 go 的作用是什么,有没有是否都可以==
    use 打开数据库
    go  批处理结束
    4。以上语句在查询分析器中输入并执行就没有错误,这是为什么?
    ==企业管理器也没发现错误 
    5。触发器创建完毕后,如何在企业管理器中查询到
    ===
    右击表->管理触发器
      

  3.   

    非常感谢楼上两位,但我的疑惑还是没有解除,请两位再看,问题解决我再加50分
    1。回阿牛 table只是表名,可以是a或b;回无枪:你是在哪里输入的,我是打开一张表,点击“显示/隐藏 SQL窗格”后输入你写的语句,依然报错
    2。在create后加上go报错 : go附近有语法错误,输入方法同1
    3。没有go也不会报错,为什么
    4。
    5。是否还有其他的途径可以编辑trigger
      

  4.   

    1、是不是table前的空格是全角空格。
      

  5.   

    弄个模板改下。
    -- =============================================
    -- Create trigger basic template(After trigger)
    -- =============================================
    IF EXISTS (SELECT name 
       FROM   sysobjects 
       WHERE  name = N'<trigger_name, sysname, trig_test>' 
       AND    type = 'TR')
        DROP TRIGGER <trigger_name, sysname, trig_test>
    GOCREATE TRIGGER <trigger_name, sysname, trig_test>
    ON <table_name, sysname, pubs.dbo.sales>
    FOR DELETE, INSERT, UPDATE 
    AS 
    BEGIN
    RAISERROR (50009, 16, 10)
    END
    GO
      

  6.   

    1、是不是table前的空格是全角空格。 ----正常空格
    弄个模板改下。------在查询分析器里没问题,现在的疑问就是为什么在企业管理器的“显示/隐藏 SQL窗格”里输入就报错呢?
      

  7.   

    创建触发器需要在查询分析器执行,建议你把脚本贴上来瞅瞅。。呵呵use,go都是需要在查询分析器中使用的~~
      

  8.   

    脚本如下:
    CREATE TRIGGER tru_auaa ON TblA
    FOR UPDATE AS
              UPDATE TblA
            SET  id = id
    发现个问题,1)for delete
                2)for delete, update,insert
                3)for insert都没问题,只是建立update触发器会报“在TblA附近有语法错误”
    why?
      

  9.   

    发现个问题,1)for delete
                2)for delete, update,insert
                3)for insert都没问题,只是建立update触发器会报“在TblA附近有语法错误”
    why?
      

  10.   

    CREATE TRIGGER tru_auaa ON T1
    FOR UPDATE AS
    UPDATE T1
    SET a1 = a1问题比较独特。我这里运行没有问题~~
    你复制我的试试
      

  11.   

    阿牛,这次的问题我是指在企业管理器的“显示/隐藏 SQL窗格”里输入,
    1)for delete
    2)for delete, update,insert
    3)for insert都没问题
    只是建立update触发器会报“在TblA附近有语法错误”
    为啥呢
      

  12.   

    因为SQL里默认的数据库是master
    如果用别的数据库,必须先use
      

  13.   

    灏变竴涓棶棰樹簡锛屽湪浼佷笟绠$悊鍣ㄧ殑鈥滄樉绀?闅愯棌 SQL绐楁牸鈥濋噷杈撳叆鐢熸垚trigger鐨勮剼鏈紝鍐欐垚
    1)for delete
    2)for delete, update,insert
    3)for insert閮芥病闂
    鍙槸for update 瑙﹀彂鍣ㄤ細鎶モ€滃湪TblA(on鍚庨潰鐨勮〃鍚?闄勮繎鏈夎娉曢敊璇€?
    涓哄暐鍛
      

  14.   

    就一个问题了,在企业管理器的“显示/隐藏 SQL窗格”里输入生成trigger的脚本,写成
    1)for delete
    2)for delete, update,insert
    3)for insert都没问题
    只是for update 触发器会报“在TblA(on后面的表名)附近有语法错误”
    为啥呢