トリガー挿入

USE [stalentzx]
GO
/ ******オブジェクト:トリガー[DBO] [GZ_HISTORY_INSERT]スクリプト日:2019年12月24日午後1時十一分40秒****** /
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
。ALTER TRIGGER [DBO] [GZ_HISTORY_INSERT]
ON [DBO] [ySysColumns]。
挿入した後- 、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 = INSERTED FROM TABLENAME、@COLNAME = COLNAME
IF @TABLENAME LIKE 'GZ_PATSETDATAの%' AND
ISNUMERIC(RIGHT(@TABLENAME、4))= 1は、

BEGIN

YSYSCOLUMNS WHERE TABLENAME = @TABLENAME SELECT * FROM INTO #YSYSCOLUMNSを

(存在する場合SELECT YSYSCOLUMNS FROM 1
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 ISNULL(YSYSCOLUMNS.ColDefault、 '')<> ''
THEN(CASE CHARINDEX('」、ColDefault)> 0
THEN 'デフォルト' +
SUBSTRING(ColDefault、1、CHARINDEX( ''、ColDefault) - 1)
ELSE 'デフォルト'+ ColDefault
END)
ELSE ''
END)
YSYSCOLUMNS FROM
WHERE TABLENAME = 'GZ_PATSETDATA' + RIGHT(@TABLENAME、4)AND
COLNAME = @COLNAMEと
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)+ '追加' +
SUBSTRING(@COL_STR、2、40000)+ ';'

EXEC(@TABLE_SQL)

INSERT INTO YSYSCOLUMNS(テーブル名、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
INSERTED FROM
COLNAME NOT IN YSYSCOLUMNS FROM(SELECT COLNAME
WHERE TABLENAME(TABLENAME、4 @)= 'C2' +右
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 CHARINDEX( ''、ColDefault)> 0
THEN 'デフォルト' +
SUBSTRING(ColDefault、1、CHARINDEX( ''、ColDefault) - 1)
ELSE 'デフォルト' + ColDefault
END)
ELSE ''
END)
YSYSCOLUMNS FROM
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(テーブル名、TableTypeID、TableOrder、TableLabel、ACessable、
ACessModule、TableVisible、PRESERE、ISUSERDISPLAY、TEAMVISIBLE、ModuleIDは)
(TABLENAME @ ,. 4)+ RIGHT SELECT 'C2' ,. 7、TableOrder、TableLabel + '_ H'、「111 '
'010000000000000000000000000000'、' 1 '0、1、1、' 01 '
#YSYSTABLES FROM

------説明入力フィールド履歴テーブル対応給与情報を確立
INSERT INTO YSYSCOLUMNS(テーブル名、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
#YSYSCOLUMNS FROM
END

END

終わり

おすすめ

転載: www.cnblogs.com/1306962984wei/p/12090942.html