Guest User

Untitled

a guest
Jan 21st, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.69 KB | None | 0 0
  1. begin tran
  2. if exists (select * from table with (updlock,serializable) where key = @key)
  3. begin
  4. update table set ...
  5. where key = @key
  6. end
  7. else
  8. begin
  9. insert table (key, ...)
  10. values (@key, ...)
  11. end
  12. commit tran
  13.  
  14. begin tran
  15. update table with (serializable) set ...
  16. where kay = @key
  17.  
  18. if @@rowcount = 0
  19. begin
  20. insert table (key, ...) values (@key,..)
  21. end
  22. commit tran
  23.  
  24. MERGE INTO table_name WITH (HOLDLOCK) USING table_name ON (condition)
  25. WHEN MATCHED THEN UPDATE SET column1 = value1 [, column2 = value2 ...]
  26. WHEN NOT MATCHED THEN INSERT (column1 [, column2 ...]) VALUES (value1 [, value2 ...])
  27.  
  28. MERGE INTO table_name WITH (HOLDLOCK) USING table_name ON (condition)
  29. WHEN MATCHED THEN UPDATE SET column1 = value1 [, column2 = value2 ...]
  30. WHEN NOT MATCHED THEN INSERT (column1 [, column2 ...]) VALUES (value1 [, value2 ...])
  31.  
  32. IF EXISTS (SELECT * FROM [Table] WHERE ID = rowID)
  33. UPDATE [Table] SET propertyOne = propOne, property2 . . .
  34. ELSE
  35. INSERT INTO [Table] (propOne, propTwo . . .)
  36.  
  37. ALTER PROCEDURE dbo.Merge_Foo2
  38. @ID int
  39. AS
  40.  
  41. SET NOCOUNT, XACT_ABORT ON;
  42.  
  43. MERGE dbo.Foo2 WITH (HOLDLOCK) AS f
  44. USING (SELECT @ID AS ID) AS new_foo
  45. ON f.ID = new_foo.ID
  46. WHEN MATCHED THEN
  47. UPDATE
  48. SET f.UpdateSpid = @@SPID,
  49. UpdateTime = SYSDATETIME()
  50. WHEN NOT MATCHED THEN
  51. INSERT
  52. (
  53. ID,
  54. InsertSpid,
  55. InsertTime
  56. )
  57. VALUES
  58. (
  59. new_foo.ID,
  60. @@SPID,
  61. SYSDATETIME()
  62. );
  63.  
  64. RETURN @@ERROR;
  65.  
  66. BEGIN;
  67. -- other operations
  68. SAVEPOINT sp1;
  69. INSERT INTO wines VALUES('Chateau Lafite 2003', '24');
  70. -- Assume the above fails because of a unique key violation,
  71. -- so now we issue these commands:
  72. ROLLBACK TO sp1;
  73. UPDATE wines SET stock = stock + 24 WHERE winename = 'Chateau Lafite 2003';
  74. -- continue with other operations, and eventually
  75. COMMIT;
  76.  
  77. INSERT INTO MyTable (Key, FieldA)
  78. SELECT @Key, @FieldA
  79. LEFT OUTER JOIN MyTable
  80. ON Key = @Key
  81. WHERE Key IS NULL
  82. IF @@ROWCOUNT = 0
  83. BEGIN
  84. UPDATE MyTable
  85. SET FieldA=@FieldA
  86. WHERE Key=@Key
  87. IF @@ROWCOUNT = 0
  88. ... record was deleted, consider looping to re-run the INSERT, or RAISERROR ...
  89. END
  90.  
  91. INSERT INTO table(Id, Description)
  92. SELECT @Id, @Description
  93. WHERE NOT EXISTS (SELECT NULL FROM table WHERE Id = @Id)
  94.  
  95. DECLARE @RowExists bit
  96. SET @RowExists = 0
  97. UPDATE MyTable SET DataField1 = 'xxx', @RowExists = 1 WHERE Key = 123
  98. IF @RowExists = 0
  99. INSERT INTO MyTable (Key, DataField1) VALUES (123, 'xxx')
  100.  
  101. INSERT INTO Sales(TransId, Status, Amount)
  102. VALUES(123, 'Pending', 20)
  103. ON DUPLICATE KEY UPDATE Status = 'Paid'
  104.  
  105. INSERT INTO Sales(TransId, Status, Amount)
  106. VALUES(123, 'Pending', 20)
  107. ON DUPLICATE KEY UPDATE Status = 'Paid'
Add Comment
Please, Sign In to add comment