IF EXISTS (SELECT name FROM sysobjects
      WHERE name = 'tb_record' AND type = 'U')
   DROP table tb_record
gocreate table tb_record
(mytablename varchar(20),
information varchar(400),
controldate smalldatetime
)goIF EXISTS (SELECT name FROM sysobjects
      WHERE name = 'create_trigger' AND type = 'P')
   DROP PROCEDURE create_triggergocreate procedure create_trigger as
begin
  declare @mytablename varchar(20),@infor_insert varchar(400),@infor_delete varchar(400),
          @infor_update varchar(400)  declare @sql varchar(1000)
 
  declare fetch_mytablename cursor local scroll 
  for 
    select mytablename from mytablename
  
  set @infor_insert='执行了插入操作'
  set @infor_delete='执行了删除操作'
  set @infor_update='执行了更新操作'  if CURSOR_STATUS('local','fetch_mytablename')=-1  Open fetch_mytablename    Fetch next from fetch_mytablename into @mytablename  while @fetch_status=0
  begin   select @sql='create trigger '+@mytablename+'_insert on '+@mytablename+' for insert as
    begin
      insert into tb_record(mytablename,information,controldate)
      values('+@mytablename+','+@infor_insert+','+''+left(convert(varchar(20),getdate(),120),10)+')'+
     ' end'    exec @sql
    
    fetch next from fetch_mytablename into @mytablename  end  close fetch_mytablename 
  deallocate fetch_mytablenameend命令能成功执行  但是 为什么tb_record中没有记录   是不是创建触发器没成功???怎么办   急急急!!!!!!!

解决方案 »

  1.   

    存储过程需要主动执行:
    exec create_trigger 然后你可以查询你的触发器是否创建成功:
    select * from sysobjects where type='tr' and parent_obj=object_id(N'tb_record')
      

  2.   

    exec create_trigger
    select * from tb_scoreupdate tb_score set score=51
    where student_no='20010201001' and course_no='c801'select * from tb_record
    提示  称 'create trigger tb_book_update on tb_book for update as
        begin
          insert into tb_record(mytablename,information,controldate)
          values('tb_book','执行了更新操作','2007-08-31') end' 不是有效的标识符。
    ??????????