触发器insert
USE [stalentzx]
GO
/****** Object: Trigger [dbo].[GZ_HISTORY_INSERT] Script Date: 2019/12/24 13:11:40 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[GZ_HISTORY_INSERT]
ON [dbo].[ySysColumns]
AFTER INSERT--,DELETE,UPDATE
AS
BEGIN
DECLARE @TABLENAME VARCHAR(50)
DECLARE @COLNAME VARCHAR(50)
DECLARE @COLORDER INT
DECLARE @COLTYPE VARCHAR(50)
DECLARE @TABLE_SQL VARCHAR(MAX)
DECLARE @COL_STR VARCHAR(MAX)
SELECT @TABLENAME = TABLENAME , @COLNAME = COLNAME FROM INSERTED
IF @TABLENAME LIKE 'GZ_PATSETDATA%' AND
ISNUMERIC(RIGHT(@TABLENAME , 4)) = 1
BEGIN
SELECT * INTO #YSYSCOLUMNS FROM YSYSCOLUMNS WHERE TABLENAME = @TABLENAME
IF EXISTS(SELECT 1 FROM YSYSCOLUMNS
WHERE TABLENAME = 'C2' + RIGHT(@TABLENAME , 4)
)
BEGIN
SET @COL_STR = ''
SELECT @COL_STR = @COL_STR + ',' + COLNAME + ' ' +
(CASE WHEN COLTYPE IN ('VARCHAR','CHAR')
THEN COLTYPE + '(' + CONVERT(VARCHAR(4000) , ColWidth) + ')'
WHEN COLTYPE IN ('DECIMAL' , 'NUMERIC')
THEN ColType + '(' + CONVERT(VARCHAR(4000) , ColWidth) + ',' +
CONVERT(VARCHAR(4000) , ColPrecision) + ')'
ELSE COLTYPE
END) +
(CASE WHEN ISNULL(YSYSCOLUMNS.ColDefault , '') <> ''
THEN (CASE WHEN CHARINDEX(',' , ColDefault) > 0
THEN ' Default ' +
SUBSTRING(ColDefault , 1 , CHARINDEX(',' , ColDefault) - 1)
ELSE ' Default ' + ColDefault
END)
ELSE ''
END)
FROM YSYSCOLUMNS
WHERE TABLENAME='GZ_PATSETDATA' + RIGHT(@TABLENAME , 4) AND
COLNAME = @COLNAME AND
COLNAME NOT IN(SELECT COLNAME FROM YSYSCOLUMNS
WHERE TABLENAME = 'C2' + RIGHT(@TABLENAME,4) AND
COLNAME = @COLNAME
)
SELECT @TABLE_SQL = 'ALTER TABLE C2' + RIGHT(@TABLENAME,4) + ' ADD ' +
SUBSTRING(@COL_STR , 2 , 40000) + ';'
EXEC (@TABLE_SQL)
INSERT INTO YSYSCOLUMNS(TableName , ColName , ColOrder , ColType , ColWidth ,
ColPrecision , ColNull , ColDefault , DisplayLabel , DisplayWidth ,
DisplayFormat , EditFormat , ColVarify , VarifyMsg , ColVisible ,
ColProperty , ColGroup , enus , zhtw , OtherLanguage ,
RelationRule , colgroupOther)
SELECT 'C2' + RIGHT(@TABLENAME , 4) , ColName , ColOrder , ColType , ColWidth ,
ColPrecision , ColNull , ColDefault , DisplayLabel , DisplayWidth ,
DisplayFormat , EditFormat , ColVarify , VarifyMsg , ColVisible ,
ColProperty , ColGroup , enus , zhtw , OtherLanguage ,
RelationRule , colgroupOther
FROM INSERTED
WHERE COLNAME NOT IN(SELECT COLNAME FROM YSYSCOLUMNS
WHERE TABLENAME = 'C2' + RIGHT(@TABLENAME,4) AND
COLNAME = @COLNAME
)
END
ELSE
BEGIN
-----------------------------------创建历史记录物理表---------------------------------
SET @COL_STR = ''
SELECT @COL_STR = @COL_STR + ',' + ColName + ' ' +
(CASE WHEN COLTYPE IN ('VARCHAR','CHAR')
THEN COLTYPE + '(' + CONVERT(VARCHAR(4000) , ColWidth) + ')'
WHEN COLTYPE IN ('DECIMAL' , 'NUMERIC')
THEN ColType + '(' + CONVERT(VARCHAR(4000) , ColWidth) + ',' +
CONVERT(VARCHAR(4000) , ColPrecision) + ')'
ELSE COLTYPE
END) +
(CASE WHEN ISNULL(YSYSCOLUMNS.ColDefault , '') <> ''
THEN (CASE WHEN CHARINDEX(',' , ColDefault) > 0
THEN ' Default ' +
SUBSTRING(ColDefault , 1 , CHARINDEX(',' , ColDefault) - 1)
ELSE ' Default ' + ColDefault
END)
ELSE ''
END)
FROM YSYSCOLUMNS
WHERE TABLENAME='GZ_PATSETDATA' + RIGHT(@TABLENAME,4)
SELECT @TABLE_SQL = 'CREATE TABLE C2' + RIGHT(@TABLENAME,4) +
' (' + SUBSTRING(@COL_STR , 2 , 40000) + ');'
EXEC (@TABLE_SQL)
------由于不存在任何对应的历史表薪资项栏位描述信息,所以需建立对应的历史表描述
SELECT * INTO #YSYSTABLES FROM YSYSTABLES
WHERE TABLENAME = 'GZ_PATSETDATA'+ RIGHT(@TABLENAME,4)
INSERT INTO ySysTables(TableName , TableTypeID , TableOrder , TableLabel , ACessable ,
ACessModule , TableVisible ,PRESERE , ISUSERDISPLAY , TEAMVISIBLE , ModuleID)
SELECT 'C2'+RIGHT(@TABLENAME,4) , 7 , TableOrder , TableLabel+'_H' , '111' ,
'010000000000000000000000000000' , '1' , 0 , 1 , 1 , '01'
FROM #YSYSTABLES
------建立对应历史表的薪资项栏位信息描述
INSERT INTO YSYSCOLUMNS(TableName , ColName , ColOrder , ColType , ColWidth ,
ColPrecision , ColNull , ColDefault , DisplayLabel , DisplayWidth ,
DisplayFormat , EditFormat , ColVarify , VarifyMsg , ColVisible ,
ColProperty , ColGroup , enus , zhtw , OtherLanguage ,
RelationRule , colgroupOther)
SELECT 'C2' + RIGHT(@TABLENAME , 4) , ColName , ColOrder , ColType , ColWidth ,
ColPrecision , ColNull , ColDefault , DisplayLabel , DisplayWidth ,
DisplayFormat , EditFormat , ColVarify , VarifyMsg , ColVisible ,
ColProperty , ColGroup , enus , zhtw , OtherLanguage ,
RelationRule , colgroupOther
FROM #YSYSCOLUMNS
END
END
END
触发器insert的更多相关文章
- MySQL中的触发器insert、update
以下为MySQL 触发器insert 的3个示例演示(update类似) delimiter // create trigger InsertUser before insert on user fo ...
- mysql 触发器,insert,auto字段竟然一样....
a 表的字段有id,uid,name,其中id是自增值, CREATE TRIGGER trigger_insert_productAFTER INSERT ON aFOR EACH ROWBEGIN ...
- sqlserver触发器insert,delete,update
Create Trigger [dbo].[upemployee_kefyu_sale] on [dbo].[employee] for update as if update(FullName) b ...
- Oracle使用触发器和mysql中使用触发器的比较——学习笔记
一.触发器 1.触发器在数据库里以独立的对象存储, 2.触发器不需要调用,它由一个事件来触发运行 3.触发器不能接收参数 --触发器的应用 举个例子:校内网.开心网.facebook,当你发一个日志, ...
- MYSQL存储过程、游标、触发器
MySQL5 中添加了存储过程的支持. 大多数SQL语句都是针对一个或多个表的单条语句.并非所有的操作都怎么简单.经常会有一个完整的操作需要多条才能完成 存储过程简单来说,就是为以后的使用而保存的一 ...
- SQL Server编程(06)触发器
SQL Server 通过触发器用来保证业务逻辑和数据的完整性.在SQL Server中,触发器是一种特殊类型的存储过程,可在执行语言事件时自动触发.SQL Server中触发器包括三种:DML触发器 ...
- [SQL]声明触发器 <待整理>
./*声明触发器 create trigger dl_stu_mess4 on student for delete as declare @name_id int select @name_id=s ...
- mysql之触发器
触发器 MySQL语句在需要时被执行,存储过程也是如此.但是,如果你想要某条语句(或某些语句)在事件发生时自动执行,怎么办呢?例如:每当增加一个顾客到某个数据库表时,都检查其电话号码格式是否正 ...
- 数往知来SQL SERVER 视图 触发器 <九>
SQL server学习_视图 1.视图 视图其实是一张虚拟表,他是一张表的部分数据或多张表的综合数据(视图就是把SQL语句封装起来) 可以看做是一个结果集,但是不是一个结果集 视图不具备存储数据的能 ...
随机推荐
- 一个很有意思的小游戏:Dig2China
最近通关了一个小游戏,游戏故事是这样的:一个美国小男孩想要去中国,他决定从自家后院往下挖,横穿地心去中国,期间经历了很多次失败.但是,每次尝试都能收获一批钱,用这些钱升级钻地机,调整自己的工具,终于在 ...
- gts测试流程
测试目的: 用于检测你做的Android gms包是否满足兼容性要求,通俗点说,gms包,就是Google自己的apk,提供基础服务,例如YouTube.playstore等. 测试前提: 1.发货u ...
- kafak学习(一)
发布与订阅消息系统. 数据(消息)的发送者不会直接把消息发送给接受者,这是发布与订阅消息系统的一个特点.发布者以某种方式对消息进行分类,接受者订阅他们,以便接受特定类型的消息.发布与订阅系统一般会有一 ...
- 无法在发送 HTTP 标头之后进行重定向
public ActionResult Index2() { Response.Buffer = true; Response.Clear(); return Redirect("/Wech ...
- [DataContract]和[DataMember]缺少引用
1.项目->右键->添加引用->找到System.Runtime.Serialization 2.代码中加上 Using System.Runtime.Serialization
- linux 扩展正则表达式 egrep
使用命令为grep -E 及egrep [root@MongoDB ~]# cat mike.log I am mike! I like linux. I like play football, te ...
- es6 js数组常用方法
一:会改变自身的方法 1.array.push(element1, ...elementN) 添加一个或多个元素到数组的末尾,并返回数组新的长度 2.array.unshift(element1, . ...
- 好用的 Puppeteer 辅助工具 Puppeteer Recorder
Puppeteer Puppeteer 是一个Node库,它提供了一个高级API来控制DevTools协议上的Chrome或Chromium,常用于爬虫.自动化测试等,你在浏览器手动完成的大多数事情都 ...
- 通过编写串口助手工具学习MFC过程--(十一)弹出模态型对话框
通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...
- C++编译器对属性的初始化检查远没有Java严格
C++编译器对属性的初始化检查远没有Java严格// Java编译通过:class yy { public static void main(String[] args) { int i; Syste ...