一种办法从go的地方分开,去掉go,分成多次执行。

解决方案 »

  1.   

    我把go去掉,但是报错
    /*[Microsoft][ODBC SQL Server Driver][SQL Server]'CREATE TRIGGER' must be the first statement in a query batch.*/
    use att2000
    if Exists(select name from sysobjects where name='UpdateEmp' and type='TR')
      Drop Trigger UpdateEmp
    goif Exists(select name from sysobjects where name='insertEmp' and type='TR')
      Drop Trigger insertEmp
    goif Exists(select name from sysobjects where name='DeleteEmp' and type='TR')
      Drop Trigger DeleteEmp
    goCREATE TRIGGER UpdateEmp ON [dbo].[USERINFO] 
    FOR UPDATE
    AS
    BEGIN
    DECLARE @name nvarchar (20)
    DECLARE @deptid smallint
    DECLARE @userid smallint
    DECLARE @hiredday smalldatetime
    select @userid=userid,@name=name,@deptid=defaultdeptid,@hiredday=hiredday from inserted
    IF (select count(*) from cat_userinfo where attuserid=@userid)>0
      update cat_userinfo set name=@name,deptid=@deptid,hiredday=@hiredday where attuserid=@userid
    ELSE
      INSERT INTO cat_userinfo(attuserid,name,deptid,manager,hiredday,isquit,createDateTime) select userid,name,defaultdeptid,0,hiredday,0,getdate() from inserted 
    END
    GOCREATE TRIGGER insertEmp ON [dbo].[USERINFO] 
    FOR INSERT
    AS
    BEGIN
      INSERT INTO cat_userinfo(attuserid,name,deptid,manager,hiredday,isquit,createDateTime) select userid,name,defaultdeptid,0,hiredday,0,getdate() from inserted 
    END
    GOCREATE TRIGGER DeleteEmp ON [dbo].[USERINFO] 
    FOR DELETE
    AS
    BEGIN
    DECLARE @name nvarchar (20)
    DECLARE @deptid smallint
    DECLARE @userid smallint
    DECLARE @hiredday smalldatetime
    select @userid=userid,@name=name,@deptid=defaultdeptid,@hiredday=hiredday from deleted
    update cat_userinfo set name=@name,deptid=@deptid,hiredday=@hiredday,isquit=1,resignday=getdate() where attuserid=@userid 
    delete user_access_group where user_id =@userid 
    END
    GO
      

  2.   

    将这个脚本保存成一个文档,.txt或者.sql都可以,然后用dos执行osql命令,不需要ado,很方便。OSQL -USA -P -dYourDatabaseName -iE:\kk\YourFileName.txt
    其中 OSQL:命令词
         -U后面紧接着USERID
         -P后面紧接着password
         -d后面紧接着dbname
         -i后面紧接着 要执行的脚本的路径\名称
    注意:参数的大小写
          参数与参数值之间不要有空格 
          不同的参数以空格隔开