触发器insert

触发器insertUSE [stalentzx]GO/****** Object: Trigger [dbo].[GZ_HISTORY_INSERT] Script Date: 2019/12/24 13:11:40

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/10388.html

(0)
上一篇 2022-12-28
下一篇 2022-12-28

相关推荐

  • Redis 的基本数据类型 和 基础应用场景「建议收藏」

    Redis 的基本数据类型 和 基础应用场景「建议收藏」1. 获取中奖用户ID,随机弹出之后集合中就不存在了【set】
    2. 存储活动中中奖的用户ID,保证同一个用户不会中奖两次【set】
    3. 存储粉丝列表,value 为粉丝的用户ID,score 是关

    2023-03-16
    107
  • MySQL8功能详解——角色[通俗易懂]

    MySQL8功能详解——角色[通俗易懂]以下文章来源于MySQL解决方案工程师,作者徐轶韬 角色功能对于Oracle的DBA来说,不是什么特殊功能,但对于MySQL而言,这是一个人心所盼的功能。 MySQL的DBA现在可以创建角色、对其赋…

    2023-01-28
    102
  • 电脑老师CPU爆满_cpu耗尽故障

    电脑老师CPU爆满_cpu耗尽故障问题描述 公司项目测试环境调用某些接口的时候,服务器立即崩溃,并一定时间内无法提供服务。 问题排查 服务器配置不够 第一反应是服务器需要升配啦,花钱解决一切!毕竟测试服务器配置确实不高,2CPU +

    2023-01-27
    125
  • 文件限时分享_文件数量泛滥的原因

    文件限时分享_文件数量泛滥的原因企业网盘能限制文件分享次数吗?肯定可以啊!设计师的工程图纸,教育培训机构的课件,办公文档,以及我们对外发送的文档,都涉及到机密文档,我们担心对方会传播这些文档。我们做什么呢可以用我们的文件传出控制软…

    2023-04-12
    113
  • 用Python的字符串join方法将列表合并成字符串

    用Python的字符串join方法将列表合并成字符串在Python中,字符串是一种不可变的序列类型,而列表是一种可变的序列类型。在实际编程中,经常需要将多个字符串或者列表拼接成一个字符串。Python提供了多种方法来实现这一目的,其中最常用的方式是使用字符串的join方法。该方法接受一个可迭代对象作为参数,并将其元素以指定的分隔符连接成一个字符串。

    2024-02-28
    42
  • Python Threading 如何停止线程

    Python Threading 如何停止线程Python中线程模块(threading)提供一个很好的多线程编程的方式。线程模块被设计为易于使用的面向对象的API。但是,线程在使用中也容易产生一些问题,其中之一是如何合理地停止线程。本篇文章将介绍Python Threading如何停止线程并防止产生一些常见的问题。

    2024-05-13
    12
  • Redis系列(二)Redis的8种数据类型

    Redis系列(二)Redis的8种数据类型NoSQL 开发中或多或少都会用到,也是面试必问知识点。最近这几天的面试每一场都问到了。但是感觉回答的并不好,还有很多需要梳理的知识点。这里通过几篇 Redis 笔记整个梳理一遍,后面再加上面试题。

    2023-02-28
    93
  • mybatis面试热点

    mybatis面试热点什么是Mybatis? Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的…

    2023-01-28
    115

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注