关于触发器和存储过程中的alter的提问
Kandy 2004-04-28 11:55:22 有一个表ITEM用来存储需要维护的项目
另一表onedetail用来存储具体的数据
因为需求方有时候需要增加或者修改删除需要维护的项目,也就确定了onedetail数据的列的不确定性,比如人事管理,包括工号,姓名,性别,民族列,如果他想再增加一个文化程度的列,我把列的信息都保存在ITEM中,想实现的是在ITEM表里每+一条数据的时候这条数据的ITEMNAME段里的内容给ONEDETAIL表作为一个列名+上
做如下触发
create trigger tr_add_up on item for insert
as
declare @col_add_name varchar(50)
select @col_add_name=itemname from inserted
alter table onedetail ADD @col_add_name varchar(50) NULL
提示@col_add_name出错,查看一本SQL SERVER6.5的手册提到触发器不能用alter,我用的SQL SERVER2000,后来把最后一句改成alter table onedetail ADD xddx varchar(50) NULL
运行正常,且在ITEM中+一条数据其数据ONEDETAIL表中就会添加名为XDDX的列
既然不支持ALTER怎么改了以后怎么会最后一句成功呢?
我又试了在存储过程中仍然是变量出错……
究竟存储过程中是不能调用ALTER的问题,还是我语句的问题?针对我说的情况如果不采用触发用什么其他的方法好呢?程序免谈……就是为了省事才用这些……