Asp教程

通过asp实例结合结合ACCESS,MSSQL来更好的深入Asp学习 - 爬坡者

« 查询指定表有多少字段,查询指定表有所有字段如何恢复Win XP缩略图功能 »

在存储过程或触发器里添加修改表或添加修改字段

昨天还在群里边嚷嚷,我甚至怀疑在,触发器里无法创建修改表或者字段。
现在总算能实现,但还是很困惑,学习吧。。。
下面是修改后的代码。
Man1983 于 2007-8-10 下去记录

If exists(select name from sysobjects where name='tr_ins_Part' and type='tr')

drop trigger tr_ins_Part

go

create trigger tr_ins_Part on lyt_test_Part

for insert

as

Declare 

@sTableName varchar(40),

@sPart_Ename varchar(20),

@sProductID char(4),

@sPartID char(4),

@sCount int,

@StrSql varchar(60)

Select @sPart_Ename=Part_Ename,@sProductID=ProductID,@sPartID=PartID from inserted

Select @sTableName=EngLish_Name From Lyt_test_Product where ProductID=@sProductID

Select @sCount=Count(PartID) From lyt_test_Part Where Part_Ename=@sPart_Ename

If @sCount>1

BEGIN

delete from lyt_test_Part where PartID=@spartID

END

else

set @StrSql='ALTER TABLE ['+@sTableName+'] ADD ['+@sPart_Ename+'] VARCHAR (255) NULL'

exec (@StrSql)


本来ELSE后面我是这样写的

ALTER TABLE [@sTableName] ADD [@sPart_Ename] VARCHAR (255) NULL

而不是现在的
set @StrSql='ALTER TABLE ['+@sTableName+'] ADD ['+@sPart_Ename+'] VARCHAR (255) NULL'

exec (@StrSql)

exec (@StrSql)是要特别注意带括号的,不然会提示
不是有效的字符

我困惑的是 用原先的 ,为什么在执行的时候变量他认不出来


说系统不存在这个表 '@sTableName'

怎么说你也要说数据库不存在'2440-b'吧,真是的。

表关系大概是这样

Product 表 存储的是我司所有产品的中文英文名称

每个产品在数据库里都以一个标的形似存在,比如我有个2440-b型号的产品

那么必须有个表和他对应

还有一个表 是lyt_test_Part

是放调试部位的

现在我添加一个Part_Name

则要触发在对应的产品标里添加一个字段[即调试部位或项目]

当然期间还有调试阶段等要去触发,这里就略掉。。

不管怎么说,我是相信了,在存储过程里或触发器里,可以动态创建修改表或字段。只是先前方法没到位

Man1983 于 2007-8-10 下去记录

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Spirit Build 80710

Copyright 2007-2008 papozhe.com [asp教程] All Rights Reserved.
浙ICP备07030537号
免责申明:所有文章除特别声明,均来自网上,主要为学习用!内容仅供参考,版权归原作者。如侵犯您利益,请来信告知.
Email:papozhe$Gmail.com QQ:76336503