create trigger trg_ins_on_test on test
for insert
as
begin
declare @sql string
set @sql=''
select @sql='create table '+tablename+'(colinfo int ) go' from inserted
exec(@sql)
end
for insert
as
begin
declare @sql string
set @sql=''
select @sql='create table '+tablename+'(colinfo int ) go' from inserted
exec(@sql)
end
for insert
as
begin
declare @sql string
set @sql=''
select @sql='if not exists(select 1 from sysobjects where name='''+tablename+''') create table '+tablename+'(colinfo int ) go' from inserted
exec(@sql)
end
create table tt
(
iid int identity(1,1) primary key,
tablename varchar(20)
)
-------在测试表中插入数据
insert tt(tablename) values('test')
-------建立触发器,插入数据时触发
create trigger trg_tt
on tt for insert
as
begin
declare @tableName varchar(1000)
declare @insertSql varchar(1000)
------获得插入数据时的表名
set @tableName=(select tablename from inserted)
------建立新表,字段为(iid int primary key,idName varchar(20))
set @insertSql='create table '+@tablename+'(iid int primary key,idName varchar(20))'
exec(@insertSql)
end
create trigger trg_ins_on_test on test
for insert
as
begin
declare @sql varchar(8000)
set @sql=''
select @sql=@sql+tablename+',' from inserted
set @sql=substring(@sql,1,len(@sql)-1)
print @sql
end
create trigger trg_ins_on_test on test
for insert
as
begin
declare @sql string
set @sql=''
select @sql=@sql+'if not exists(select 1 from sysobjects where name='''+tablename+''') create table '+tablename+'(colinfo int ) go ' from inserted
exec(@sql)
end
create trigger tr_insert on 表
for insert
as
declare @s varchar(8000)
declare tb cursor local for
select 'if not exists(select 1 from sysobjects where name='''
+tablename+''' and xtype=''U'') create table ['+tablename
+'](id int,name varchar(10))'
from inserted group by tablename
open tb
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb
go
create table 表(id int identity(1,1),tablename sysname)
go--处理的触发器(如果同时插入几条记录,也可以处理)
create trigger tr_insert on 表
for insert
as
declare @s varchar(8000)
declare tb cursor local for
select 'if not exists(select 1 from sysobjects where name='''
+tablename+''' and xtype=''U'') create table ['+tablename
+'](id int,name varchar(10))'
from inserted group by tablename
open tb
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb
go--插入数据测试
insert 表 values('aa')
insert 表 select 'aa'
union all select 'bb'
union all select 'cc'
go--删除测试
drop table 表,aa,bb,cc