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'')' 系统正常执行了插入 但是理论上来这时就出现了死循环 但为什么没有出现呢?比如我插入一条记录 这时触发触发器 触发器建立一个表, 然后在以前的表插入一条记录 这时应该触发触发器 但为什么没有触发呢?
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,@sql)' 方案行不通 报需要声明变量@sql的错误
2 select @award_id=id,@max_number=max_number,@select_number=select_number from inserted -- 有必要循环吗 while(@select_number>0) begin
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)
能告诉我格式错在那里吗?我将
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'')'
系统正常执行了插入
但是理论上来这时就出现了死循环
但为什么没有出现呢?比如我插入一条记录
这时触发触发器
触发器建立一个表,
然后在以前的表插入一条记录
这时应该触发触发器
但为什么没有触发呢?
方案行不通
报需要声明变量@sql的错误
select @award_id=id,@max_number=max_number,@select_number=select_number
from inserted
--
有必要循环吗
while(@select_number>0)
begin
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)