问题一感觉是出在将@sql作为变量插入的地方

解决方案 »

  1.   

    zjcxc(: 邹建 :) :
    能告诉我格式错在那里吗?我将
    set @sql1='insert into award_class (max_number,select_number,bewrite) values (23,6,'''+@sql+''')'
    改为
    set @sql1='insert into award_class (max_number,select_number,bewrite) values (23,6,''bb'')'
    系统正常执行了插入
    但是理论上来这时就出现了死循环
    但为什么没有出现呢?比如我插入一条记录
    这时触发触发器
    触发器建立一个表,
    然后在以前的表插入一条记录
    这时应该触发触发器
    但为什么没有触发呢?
      

  2.   

    set @sql1='insert into award_class (max_number,select_number,bewrite) values (23,6,@sql)'
      

  3.   

    set @sql1='insert into award_class (max_number,select_number,bewrite) values (23,6,@sql)'
    方案行不通
    报需要声明变量@sql的错误
      

  4.   

    2
    select @award_id=id,@max_number=max_number,@select_number=select_number
    from inserted
    --
    有必要循环吗
    while(@select_number>0)
    begin
      

  5.   


    create trigger table_name on table1
    for insert,delete
    AS
    declare @table_name varchar(20),@max_number int,@select_number int,@award_id int,@field_declare varchar(50),@sql nvarchar(8000),@sql1 nvarchar(8000)
    set @field_declare=''
    select @award_id=id,@max_number=max_number,@select_number=select_number from inserted
    --
    while(@select_number>0)
    begin
    set @field_declare=@field_declare+'fileld_'+cast(@select_number as varchar(2))+' int,'
    set @select_number=@select_number-1
    end
    --
    set @table_name='table_name'+cast(@award_id as varchar(10))
    set @sql='create table '+@table_name+' (id int,name varchar(20))'
    set @sql1='insert into award_class (max_number,select_number,bewrite) values (23,6,'''+@sql+''')'
    exec(@sql)
    exec(@sql1)
      

  6.   

    你先把exec改为print @sql看看代码是否正确
      

  7.   

    用print @sql在触发器里如何才能看到结果