Update trigger

  • I have insert trigger for inserting records from T_PDF table into T_WV_RESULT Table. The below trigger is fired when new records are inserted into the T_PDF table. Now need update trigger for the below

    T_PDF table structure(Source Table)

    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] Target Table

    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

    Insert Trigger
    CREATE TRIGGER [dbo].[T_PDF_WV_RESULT]
    ON [dbo].[T_PDF]
    AFTER INSERT
    AS
    BEGIN
      INSERT INTO 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)

    How can i write update trigger for the above one?It contains some sub queries.if i made any changes it reflects in T_WV_Result table.

  • why are you doing all the subqueries instead of joining to the tables themselves?  Every row is running 9 select statements to get data.  What is the purpose of the second table?

    For better, quicker answers, click on the following...
    http://www.sqlservercentral.com/articles/Best+Practices/61537/

    For better answers on performance questions, click on the following...
    http://www.sqlservercentral.com/articles/SQLServerCentral/66909/

  • What is the purpose of creating this table?  Wouldn't it be easier to create a view and use that instead of duplicating data?

    Jeffrey Williams
    “We are all faced with a series of great opportunities brilliantly disguised as impossible situations.”

    ― Charles R. Swindoll

    How to post questions to get better answers faster
    Managing Transaction Logs

  • The main table T_pdf contains millions of records,so we created another one table and moved some required records into another table(T_WV_RESULT).View will be faster then table? because view does not store records so we created another table and also  above query
    contains five views (V_PROD_ALIAS_MANU,V_PROD_ALIAS_SYN,V_PROD_ALIAS_ICO V_PROD_ALIAS_SITE,V_PROD_ALIAS_CASN)
    so please suggest

  • view will be faster then table?.Please suggest.so that i can avoid second table.

  • jkramprakash - Sunday, January 20, 2019 9:56 AM

    view will be faster then table?.Please suggest.so that i can avoid second table.

    If you have the right indexes in place - and the code is optimized - then a second table would not be necessary.  Without further information on the queries that are slow - we really cannot determine what would be the better approach.  You could look at filtered indexes or indexed views but that is only a guess.

    Jeffrey Williams
    “We are all faced with a series of great opportunities brilliantly disguised as impossible situations.”

    ― Charles R. Swindoll

    How to post questions to get better answers faster
    Managing Transaction Logs

  • jkramprakash - Sunday, January 20, 2019 9:56 AM

    view will be faster then table?.Please suggest.so that i can avoid second table.

    No.  It's not faster than a table.  It's just another way of looking at a table.  That's why it's call a "View".

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

Viewing 7 posts - 1 through 6 (of 6 total)

You must be logged in to reply to this topic. Login to reply