有三個問題, 一并回答,每個50分, 我最多只能給100, 解決再開貼給分!
1,如何實現一個觸發器激發時, 暫停另外一個觸發器, 調用結束後, 再重新啟用那個觸發器?
create Trigger AAA
on AAA after update
as
begin
disabled Trigger BBB
.....
enabled Trigger BBB
end
2, 如何批量修改或刪除相似名字字段?
有几個數據表, 有一系列相似字段, 如 AA1, AA2, AA3...
我可以用如下:
Alter table AAA
drop column aa1, aa2...
每次要將相似字段找出來, 很多, 容易漏寫了某個字段, 有什麼好辦法?
我需要的是一種類似模糊匹配的方式, 就是說, 我輸入
Alter table AAA
drop column func(aaX)
就可將所有column 中以 aa開頭的字段刪除
3, select AA, BB from AAA 可以從數據表找出 AA, BB 列值, 現在我想的是, 用類似
select not (aa, bb) from AAA, 將數據表中 非 aa, bb的字段列出來, SQL語句該如何寫呢??
第2个问题:
declare @CmdStr varchar(8000)
set @CmdStr=
select @CmdStr=@CmdStr+
alter table +name+ drop column aa+char(13)
from sysobjects where xtype=U
execute @CmdStr
第3个问题:
declare @CmdStr varchar(8000)
set @CmdStr=
select @CmdStr=@CmdStr+t2.name from sysobjects t1,syscolumns t2
where t1.id=t2.id and t1.name=你的表名 and t2.name not
in (不可能的字段1,不可能的字段2)
set @CmdStr=select +@CmdStr+ from 你的表名
execute (@cmdstr)
1,如何實現一個觸發器激發時, 暫停另外一個觸發器, 調用結束後, 再重新啟用那個觸發器?
create Trigger AAA
on AAA after update
as
begin
--暂停一个触发器
exec(alter table 触发器所在的表 DISABLE TRIGGER 要暂停的触发器名)
.......
处理语句
.......
--启用触发器
exec(alter table 触发器所在的表 ENABLE TRIGGER 要暂停的触发器名)
end
go
2. 如何批量修改或刪除相似名字字段?
declare @s varchar(8000)
select @s=@s+
alter table 你的表 drop column [+name+]
from syscolumns
where object_id(你的表)=id and name like aa%
exec(@s)
3.select AA, BB from AAA 可以從數據表找出 AA, BB 列值, 現在我想的是, 用類似
select not (aa, bb) from AAA, 將數據表中 非 aa, bb的字段列出來, SQL語句該如何寫呢??
declare @s varchar(8000)
set @s=
select @s=@s+,[+name+]
from syscolumns
where object_id(你的表)=id and name not in(aa,bb)
set @s=substring(@s,2,8000)
exec(select +@s+ from 你的表)