Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
egemen_ates
Yak Posting Veteran
76 Posts |
Posted - 2012-06-22 : 05:59:00
|
I create trigger my trigger show belown as ,some time update statement given deadlock for orders table.how can i solve this caseCREATE TRIGGER [dbo].[add_orders] ON [dbo].[ORDERS] INSTEAD OF INSERT,UPDATE,DELETEASBEGINSET NOCOUNT ON SET NOCOUNT ON; IF EXISTS(SELECT TOP 1 ORDER_ID FROM INSERTED) BEGIN IF EXISTS(SELECT TOP 1 ORDER_ID FROM DELETED)--UPDATE BEGIN DELETE FROM workcube_cf_2012_1.dbo.ORDERS_VIRTUAL WHERE ORDER_ID = (SELECT ORDER_ID FROM INSERTED) INSERT INTO dbo.ORDERS_VIRTUAL ( ORDER_ID, ORDER_STATUS, RESERVED, DELIVER_DEPT_ID, LOCATION_ID ) SELECT ORDER_ID, ORDER_STATUS, RESERVED, DELIVER_DEPT_ID, LOCATION_ID FROM INSERTED END ELSE--INSERT BEGIN INSERT INTO dbo.ORDERS_VIRTUAL ( ORDER_ID, ORDER_STATUS, RESERVED, DELIVER_DEPT_ID, LOCATION_ID ) SELECT ORDER_ID, ORDER_STATUS, RESERVED, DELIVER_DEPT_ID, LOCATION_ID FROM INSERTED END END ELSE BEGIN IF EXISTS(SELECT TOP 1 * FROM DELETED)--DELETE BEGIN DELETE FROM dbo.ORDERS_VIRTUAL WHERE ORDER_ID = (SELECT ORDER_ID FROM DELETED) END ENDSET NOCOUNT OFFEND; |
|
namman
Constraint Violating Yak Guru
285 Posts |
Posted - 2012-06-22 : 16:28:21
|
Fixing deadlock is time consumming, and we need more info than thatCould you post the trace file of that deadlock?Also, have a quick question.For Update, you delete rows from table ORDERS_VIRTUAL WHERE ORDER_ID = (SELECT ORDER_ID FROM INSERTED). Then you insert into the same table with data, and the same ORDER_ID ?If so, why don't you just update the table. Do I miss something. |
 |
|
|
|
|
|
|