触发器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

相关推荐

  • 利用Python的random模块生成随机数

    利用Python的random模块生成随机数Python自带的random模块为生成伪随机数提供了支持。random模块的重要函数有:randint、random、uniform、choice、shuffle等,可以生成整数、浮点数、列表等不同类型的随机数。

    2023-12-16
    88
  • MySQL8.0.x 版本安装步骤傻瓜式教程【官方版】

    MySQL8.0.x 版本安装步骤傻瓜式教程【官方版】MySQL8.0.x 安装 一、下载 MySQL官网下载链接:https://downloads.mysql.com/archives/community/ 选择版本后下载zip文件 博主选择的是8.

    2023-05-11
    129
  • Oracle——基本SQL「建议收藏」

    Oracle——基本SQL「建议收藏」 第 1 章 基本SQL SELECT语句 1. 对于日期型数据, 做 , / 运算不合法 2. 包含空值的数学表达式的值都为空值 3. 别名使用双引号! 4. oracle 中连接字符串使用

    2023-02-20
    156
  • ORA-01536: space quota exceeded for tablespace案例「建议收藏」

    ORA-01536: space quota exceeded for tablespace案例「建议收藏」最近在做数据治理的过程中,回收了部分账号的权限,因为角色RESOURCE里拥有CREATE TABLE的权限,所以我想回收RESOURCE角色。例如,对于TEST账号,收回其创建表的权限,就收回了授予

    2023-04-16
    148
  • PyCharm中的整体缩进设置

    PyCharm中的整体缩进设置在使用PyCharm进行代码编写时,我们经常会遇到代码缩进问题。相信有不少人在处理代码格式时,曾被不统一的缩进而困扰过。为了解决这个问题,PyCharm提供了一些实用的设置。

    2024-05-12
    50
  • Mysql主从复制搭建「终于解决」

    Mysql主从复制搭建「终于解决」1.mysql主库会把所有的写操作记录在binlog日志中,并且生成log dump线程,将binlog日志传给从库的I/O线程,从库生成两个线程,一个是I/O线程,另外一个是SQL线程。 主将更改…

    2023-02-11
    134
  • Python中__str__方法的用法与实例

    Python中__str__方法的用法与实例code__str__/code是Python中的一个特殊方法,用于创建一个对象的字符串表示形式。当我们打印一个对象时,实际上是调用该对象的code__str__/code方法,将其返回值输出到控制台。这个方法可以让我们自定义一个对象的字符串输出形式,方便调试和理解。

    2023-12-12
    84
  • MySQL数据库:group分组

    MySQL数据库:group分组group by:分组 GroupBy语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行

    2022-12-21
    133

发表回复

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