Update in an Insert Trigger

  • I have a need to set current fields to default values when a new record is inserted. Is it good practice to update the same table in an after insert trigger?

  • Normally you'd just specify a default value rather than having to use a trigger for that.

    For example, say you have table "tableA" that you want to add a default value of current date for "column4", then:

    ALTER TABLE dbo.tableA ADD DEFAULT GETDATE() FOR column4;

    SQL DBA,SQL Server MVP(07, 08, 09) A socialist is someone who will give you the shirt off *someone else's* back.

  • I would but the system that created the record updates the record based on the record it copied from (Add and Carry) instead of Add. So If I default a field, it will be updated any way. So on the back end after the insert, I need to change the value.

  • Which dbms are you using?  SQL Server? Access? Oracle?

    This is a SQL Server forum.  Someone here might be able to help you with another dbms, but less so than with SQL Server.

    SQL DBA,SQL Server MVP(07, 08, 09) A socialist is someone who will give you the shirt off *someone else's* back.

  • SQL. The program is our ERP In the Item master users Do an "Add and Carry" What that does is it takes the current record and copies it to a new record with the same values as the old. So I need to default a few fields to something else after they save the record in the program as to not have bad data.

  • Cool, I can help more/fully with SQL Server:

    SET ANSI_NULLS ON;
    SET QUOTED_IDENTIFIER ON;
    GO
    CREATE TRIGGER dbo.trigger_name
    ON dbo.table_name
    AFTER INSERT
    AS
    UPDATE tn
    SET col1=GETDATE(), col2=0, col3='' /*, ...*/
    FROM dbo.table_name tn
    INNER JOIN inserted i ON i.key_col = tn.key_col
    GO

    SQL DBA,SQL Server MVP(07, 08, 09) A socialist is someone who will give you the shirt off *someone else's* back.

  • This was removed by the editor as SPAM

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

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