实现用户管理表字段

某一报表,需要用户自己设定某一项目所显示字段不一样。因此需要设计一个表来管理这些字段。

但为了直接显示到目标表上,触发器可以轻松解决此问题。

下面一个插入触发器一个删除触发器,请参考SQL Server代码:

 

代码
SET  ANSI_NULLS  ON
GO
SET  QUOTED_IDENTIFIER  ON
GO

ALTER   TRIGGER   [ dbo ] . [ tri_CargoSpace_Insert ]   ON   [ dbo ] . [ CargoSpace ]
FOR   INSERT    -- 插入触发器
AS
BEGIN
    
SET  NOCOUNT  ON
    
DECLARE   @CargoSpaceId   NVARCHAR ( 50
    
-- 从触发器虚拟表INSERTED取得值
     SELECT    @CargoSpaceId =   [ CargoSpaceId ]   FROM  INSERTED
    
-- 判断目标表字段是否存在,如果不存在,修改目标表,添加字段。
     EXECUTE ( ' IF NOT EXISTS(SELECT * FROM SYSCOLUMNS WHERE [id] = OBJECT_ID( '' ItemGeneralStock '' ) AND [name] =  ''' +   @CargoSpaceId   + ''' )    
    ALTER TABLE [ItemGeneralStock] ADD [
' +   @CargoSpaceId   + ' ] DECIMAL(18,6) NULL ' )
END

  

代码
SET  ANSI_NULLS  ON
GO
SET  QUOTED_IDENTIFIER  ON
GO

ALTER   TRIGGER   [ dbo ] . [ tri_CargoSpace_Delete ]   ON   [ dbo ] . [ CargoSpace ]
FOR   DELETE    -- 删除触发器
AS
BEGIN
    
SET  NOCOUNT  ON
    
-- 宣告一个变量
     DECLARE   @CargoSpaceId   NVARCHAR ( 50
    
-- 从触发器虚拟表DELETED取得值
     SELECT    @CargoSpaceId =   [ CargoSpaceId ]   FROM  DELETED
    
--  判断目标表字段是否存在,如果存在,修改目标表,删除字段。
     EXECUTE ( ' IF EXISTS(SELECT * FROM SYSCOLUMNS WHERE [id] = OBJECT_ID( '' ItemGeneralStock '' ) AND [name] =  ''' +   @CargoSpaceId   + ''' )    
    ALTER TABLE [ItemGeneralStock] DROP COLUMN [
' +   @CargoSpaceId   + ' ] ' )
END

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值