简体   繁体   中英

SQL trigger to insert data from one table to another if a condition is met

I am miserably failing to build a sql trigger (in background) where I want to insert data from one table to another if a certain condition is met, something like this:

  1. Create trigger on table Invoice
  2. If inv_number starts with inv
  3. Then Insert into Document (var1,var2,var3) values (inv_number, inv_date, inv_amount)

Thanks

If you're using SQL Server (as I said in comments - triggers are highly vendor-specific, so if you're using something else, you'll have to adapt as needed), you can use something like this:

CREATE TRIGGER trgInvoiceInsert
ON dbo.Invoice
AFTER INSERT    -- adapt if you need to run this after UPDATE or DELETE, too
AS 
BEGIN
    /* In SQL Server, if you inserting a bunch of rows 
       at once using an `INSERT INTO .... SELECT ....` 
       approach, then this trigger will be called only *ONCE*, 
       with all the inserted rows in the "Inserted" pseudo table.
       Handle it accordingly - in a set-based manner
    */
    INSERT INTO dbo.Document (col1, col2, col3)
        SELECT i.inv_number, i.inv_date, i.inv_amount)
        FROM Inserted i
        WHERE i.inv_number LIKE 'inv%'
END

For further details, check out the official Microsoft documentation on SQL Server triggers

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM