Триггер обновления в SQL Server 2014 - PullRequest
0 голосов
/ 17 января 2019

У меня есть триггер вставки для вставки записей из таблицы T_PDF в T_WV_RESULT. Приведенный ниже триггер срабатывает, когда новые записи вставляются в таблицу T_PDF. Теперь мне нужен триггер обновления для приведенного ниже.

T_PDF Структура таблицы

CREATE TABLE [dbo].[T_PDF](
    [F_PRODUCT] [varchar](50) NOT NULL,
    [F_LANGUAGE] [varchar](2) NOT NULL,
    [F_FORMAT] [varchar](3) NOT NULL,
    [F_SUBFORMAT] [varchar](4) NOT NULL,
    [F_DATE_STAMP] [datetime] NOT NULL,
    [F_PLANT] [varchar](10) NOT NULL,
    [F_SUPPLIER] [varchar](200) NOT NULL,
    [F_PRODUCT_NAME] [nvarchar](2000) NULL,
    [F_DATE_REVISED] [datetime] NULL,
    [F_PDF] [varbinary](max) NULL,
    [F_AUTHORIZED] [smallint] NULL,
    [F_Published_Date] [datetime] NULL,
    [F_CAS_NUMBERS] [varchar](4000) NULL,
    [F_COMPONENT_IDS] [varchar](4000) NULL,
    [F_ISSUE_DATE] [datetime] NULL,
    [F_DISPOSAL_DATE] [datetime] NULL,
    [F_DOC_TYPE] [smallint] NOT NULL,
    [F_DOC_PATH] [varchar](200) NULL,
    [F_KEYWORDS] [varchar](255) NULL,
    [F_CUSTOM1] [nvarchar](4000) NULL,
    [F_CUSTOM2] [nvarchar](4000) NULL,
    [F_CUSTOM3] [nvarchar](4000) NULL,
    [F_CUSTOM4] [nvarchar](4000) NULL,
    [F_CUSTOM5] [nvarchar](4000) NULL,
    [F_GUID] [uniqueidentifier] NULL,
    [F_User_Updated] [varchar](15) NULL,
    [F_REV_NUM] [real] NULL,
    [F_IS_S3] [bit] NULL,
    [F_COUNTER] [int] IDENTITY(1,1) NOT NULL,
 CONSTRAINT [PK_T_PDF] PRIMARY KEY CLUSTERED 
(
    [F_PRODUCT] ASC,
    [F_LANGUAGE] ASC,
    [F_FORMAT] ASC,
    [F_SUBFORMAT] ASC,
    [F_DATE_STAMP] ASC,
    [F_PLANT] ASC,
    [F_DOC_TYPE] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

T_WV_RESULT Структура таблицы

CREATE TABLE [dbo].[T_WV_RESULT](
    [ID] [varchar](50) NULL,
    [NAME] [nvarchar](2000) NULL,
    [FMTCODE] [varchar](3) NULL,
    [SFMTCODE] [varchar](4) NULL,
    [SFMT] [varchar](30) NULL,
    [LANGCODE] [varchar](2) NULL,
    [LANG] [varchar](50) NULL,
    [PLANTCODE] [varchar](10) NULL,
    [RDATE] [datetime] NULL,
    [CASNUM] [varchar](4000) NULL,
    [TN] [varchar](4000) NULL,
    [CP] [varchar](4000) NULL,
    [CUS5] [varchar](4000) NULL,
    [MANU] [varchar](max) NULL,
    [SYN] [nvarchar](4000) NULL,
    [ICO] [nvarchar](4000) NULL,
    [DOC] [varchar](2000) NULL,
    [COVER] [varchar](100) NULL,
    [GUID] [varchar](256) NULL,
    [SDS] [varchar](4) NULL,
    [SITECODE] [varchar](8) NULL,
    [PDATE] [datetime] NULL,
    [CASDATA] [varchar](4000) NULL,
    [CUS3] [varchar](4000) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

ВСТАВИТЬ ТРИГГЕР

CREATE TRIGGER [dbo].[T_PDF_WV_RESULT] ON [dbo].[T_PDF] 
AFTER INSERT 
AS  
BEGIN

INSERT T_WV_RESULT (ID , NAME, SFMTCODE, SFMT, 
    LANGCODE, LANG, PLANTCODE, FMTCODE,
    RDATE, CASNUM,  TN, CP,
    CUS5, MANU, SYN, ICO,
    DOC, COVER, [GUID], SDS, 
    SITECODE, PDATE, CASDATA, CUS3
    )
    SELECT TP.F_PRODUCT, TP.F_PRODUCT_NAME, TP.F_SUBFORMAT, (SELECT MS.F_MSDSTYPE_DESC FROM T_MSDSTYPES MS WHERE MS.F_MSDSTYPE = TP.F_SUBFORMAT AND MS.F_FORMAT = TP.F_FORMAT) AS SFMT,
    TP.F_LANGUAGE, (SELECT TL.F_LANGUAGE_NAME FROM T_LANGUAGES TL WHERE TL.F_LANGUAGE = TP.F_LANGUAGE) AS LANG, TP.F_PLANT AS PLANTCODE, TP.F_FORMAT AS FMTCODE,
    TP.F_DATE_REVISED, F_CAS_NUMBERS, TP.F_CUSTOM1, TP.F_CUSTOM2,
    (SELECT TC.F_COUNTRY_NAME FROM T_COUNTRIES TC WHERE TC.F_COUNTRY_CODE = TP.F_CUSTOM5) AS cus5,
    (SELECT F_PHRASE FROM [V_PROD_ALIAS_MANU] WHERE F_PRODUCT = TP.F_PRODUCT) AS MANU, 
    (SELECT F_DATA FROM V_PROD_ALIAS_SYN WHERE F_PRODUCT = TP.F_PRODUCT) AS SYN, 
    (SELECT F_DATA FROM V_PROD_ALIAS_ICO WHERE F_PRODUCT = TP.F_PRODUCT) AS ICO, 
    'SDS - ' + (SELECT TL.F_LANGUAGE_NAME FROM T_LANGUAGES TL WHERE TL.F_LANGUAGE = TP.F_LANGUAGE) + ' - PDF' AS DOC, '' AS COVER, CAST(TP.F_GUID AS VARCHAR(36)) + '_PDF' AS [GUID], 'PDF' AS SDS,
    (SELECT TOP 1 F_TEXT_CODE FROM V_PROD_ALIAS_SITE WHERE F_PRODUCT = TP.F_PRODUCT) AS SITECODE,
     TP.F_PUBLISHED_DATE, (SELECT F_DATA FROM V_PROD_ALIAS_CASN WHERE F_PRODUCT = TP.F_PRODUCT) AS CASDATA, TP.F_CUSTOM3 AS CUS3
    FROM INSERTED TP
    WHERE TP.F_AUTHORIZED IN (0,3)

Он также содержит несколько подзапросов. Как я могу написать триггер обновления для этого?

...