![]() |
|
|
Welcome to the { mindfrost82.com } forums. You are currently viewing our boards as a guest which gives you limited access to view most discussions and access our other features. By joining our free community you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is fast, simple and absolutely free so please, join our community today! If you have any problems with the registration process or your account login, please contact contact us. |
|
|||||||
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
|
|||
|
Delete Trigger
I have set up a trigger that updates a table in another part of may database
whenever a row is deleted - of the form CREATE TRIGGER t_Delete ON tblOrderDetails AFTER DELETE AS SELECT @Quantity = Quantity FROM DELETED etc etc This works fine if I delete only one row from tblOrderDetails at a time, but if I run a DELETE query that deletes more than one row, the correct rows are deleted but my trigger only gets executed once, where I want it to be executed for each deleted row. Is this normal behaviour, or am I doing somthing wrong? Thanks in advance. Andy Baker |
|
|||
|
Re: Delete Trigger
The trigger fires once for the delete statement but you have access to all
deleted rows in the Deleted logical table. You have to write your code to handle multiple rows. For example, in your select statement you can use SUM to get the summary quantity for all deleted rows: SELECT @Quantity = SUM(Quantity) FROM Deleted; HTH, Plamen Ratchev http://www.SQLStudio.com |
|
|||
|
Re: Delete Trigger
"Andy Baker" <abaker@NOSPAMvanputer.com> wrote in message
news:V4adnYrYUYXLCRXVnZ2dneKdnZydnZ2d@posted.plusn et... >I have set up a trigger that updates a table in another part of may >database whenever a row is deleted - of the form > CREATE TRIGGER t_Delete ON tblOrderDetails AFTER DELETE > AS > SELECT @Quantity = Quantity FROM DELETED > etc etc > This works fine if I delete only one row from tblOrderDetails at a time, > but if I run a DELETE query that deletes more than one row, the correct > rows are deleted but my trigger only gets executed once, where I want it > to be executed for each deleted row. Is this normal behaviour, or am I > doing somthing wrong? Thanks in advance. > > Andy Baker > > The only thing you were doing wrong was to assume that the trigger would be executed for each row. Triggers execute once per statement, not per row. So you need to change your code reflect that. Unfortunately we don't know what your trigger does with the value @Quantity so it's hard to advise you. -- David Portas |
|
|||
|
Re: Delete Trigger
"David Portas" <REMOVE_BEFORE_REPLYING_dportas@acm.org> wrote in message news:bq2dne4ys_7PchXVnZ2dnUVZ8uOdnZ2d@giganews.com ... > "Andy Baker" <abaker@NOSPAMvanputer.com> wrote in message > news:V4adnYrYUYXLCRXVnZ2dneKdnZydnZ2d@posted.plusn et... >>I have set up a trigger that updates a table in another part of may >>database whenever a row is deleted - of the form >> CREATE TRIGGER t_Delete ON tblOrderDetails AFTER DELETE >> AS >> SELECT @Quantity = Quantity FROM DELETED >> etc etc >> This works fine if I delete only one row from tblOrderDetails at a time, >> but if I run a DELETE query that deletes more than one row, the correct >> rows are deleted but my trigger only gets executed once, where I want it >> to be executed for each deleted row. Is this normal behaviour, or am I >> doing somthing wrong? Thanks in advance. >> >> Andy Baker >> >> > > The only thing you were doing wrong was to assume that the trigger would > be executed for each row. Triggers execute once per statement, not per > row. So you need to change your code reflect that. Unfortunately we don't > know what your trigger does with the value @Quantity so it's hard to > advise you. > > -- > David Portas > Thanks - that clears it up. I have changed my code to account for it. Andy Baker |
![]() |
|
| Thread Tools | Search this Thread |
| Display Modes | |
|
|