你只取了inserted中的一条记录来处理,不适合多条记录的情况,应该用游标逐条取出来处理deleted表也应该用游标逐条取出来删除表建表、删除表都应该用动态SQL语句:
exec('create table ...')
exec('drop table ...')
exec('create table ...')
exec('drop table ...')
解决方案 »
- MS SQL server有文本挖掘工具吗?
- sql访问文本文件,看到有些需要定义schema文件,请问这个文件怎么定义呢?
- 请教一条SQL。
- 请问SQLSERVER可以再哪里设置保存更多的作业日志记录
- SQL数据库问题,请教高手!!!
- select name as x ,0 as y form test可以做到吗?
- 插入记录,ID加1问题
- SQL字段計算
- 期待大虾帮我解决一个日期的问题
- !!!以下语句的结果为什么这样??急,在线等待
- 为什么我改了windows2000服务器的系统管理员密码后sql server的服务就不能启动了,说是登陆错误
- 怎样选出一个表中某个字段第二大的值,最大是select MAX(a) as a from tb1,第二大呢?
pbsql(风云)
我一般用他
FOR INSERT,DELETE
AS
if update(SH_SN_CH)
BEGIN
DECLARE @tbname sysname
declare tb cursor local for
select 'SI_SH_GDA_'+SH_SN_CH from inserted
open tb
fetch tb into @tbname while @@fetch_status=0
begin
exec('
Create TABLE '+@tbname+' (
GDA_SN_CH varchar(20) NOT NULL PRIMARY KEY, --序号
GD_SN_CH varchar(20) NOT NULL PRIMARY KEY, --货物编号
GDA_Stock_Amount_NO decimal(9) NOT NULL , --入库数量
GDA_Stock_Price_CH money NOT NULL, --进价
GDA_Reference_Price_CH money NOT NULL, --参考进价
GDA_Current_Stock_Amount_NO decimal NOT NULL, --现库存量
GDA_ESID_CH varchar(20) NOT NULL, --入库单号
GDA_Re_CH varchar(100) --备注
)')
fetch tb into @tbname
end
close tb
deallocate tb
END
else
BEGIN
declare @s nvarchar(4000)
declare tb cursor local for
select 'drop table SI_SH_GDA_'+SH_SN_CH from deleted
open tb
fetch tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch tb into @tbname
end
close tb
deallocate tb
END
当 if update(SH_SN_CH) 不成立时,就是删除处理(这点我测试过,确实如此)