Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL Server ON DELETE Trigger

I'm trying to create a basic database trigger that conditionally deletes rows from database1.table1 when a row from database2.table2 is deleted. I'm new to triggers and was hoping to learn the best way to accomplish this. This is what I have so far. Suggestions?

CREATE TRIGGER sampleTrigger     ON database1.dbo.table1     FOR DELETE AS     IF EXISTS (SELECT foo                FROM database2.dbo.table2                WHERE id = deleted.id                AND bar = 4)  -- If there is a row that exists in database2.dbo.table2  -- matching the id of the deleted row and bar=4, delete  -- it as well.  -- DELETE STATEMENT?  GO 
like image 508
Shawn H. Avatar asked Apr 03 '12 15:04

Shawn H.


People also ask

How do you write a trigger delete in SQL Server?

Expand the database that you want, expand Tables, and then expand the table that contains the trigger that you want to delete. Expand Triggers, right-click the trigger to delete, and then click Delete. In the Delete Object dialog box, verify the trigger to delete, and then click OK.

What is instead of delete trigger?

INSTEAD OF DELETE TRIGGERS are used, to delete records from a view. Introduction. INSTEAD OF DELETE triggers are used to delete records from a View that is based on multiple tables. Description. An INSTEAD OF DELETE trigger gets executed in place of the DELETE event on a table or a View.

Does UPDATE trigger fire on Delete?

A DELETE does not fire UPDATE triggers.


2 Answers

CREATE TRIGGER sampleTrigger     ON database1.dbo.table1     FOR DELETE AS     DELETE FROM database2.dbo.table2     WHERE bar = 4 AND ID IN(SELECT deleted.id FROM deleted) GO 
like image 172
Magnus Avatar answered Sep 23 '22 17:09

Magnus


Better to use:

DELETE tbl FROM tbl INNER JOIN deleted ON tbl.key=deleted.key 
like image 34
Scott Rayner Avatar answered Sep 19 '22 17:09

Scott Rayner