SQL כדי לקבוע אם פיסת נתונים בודדת מבוצעת על-ידי מפתח בעדכון או הוספה

עודכן דף :
תאריך יצירת דף :

בתהליך כגון עדכון אם יש מפתח או הוספה אם אין מפתח, בחירה מתבצעת בדרך כלל בהתבסס על המפתח, והתהליך נקבע על-ידי בדיקה אם יש מקרה אחד. SQL Server 2008 מוסיף גם משפט "מיזוג" המאפשר לך לבצע עדכון והוספה (ולאחר מכן מחיקה) במשפט יחיד. עם זאת, זוהי השוואה של שתי טבלאות ואינה מתאימה לנתונים בודדים.

למעשה, יש דרך לעדכן שורה בקלות על ידי קביעת עדכון והוספה מבלי לבדוק את מספר הרשומות עם משפט נבחר.

update [TableName]
set [ColumnName] = @value
--    : 他更新 SQL
where [KeyColumnName] = @value
--    : 他キー比較
if @@ROWCOUNT = 0
insert into [TableName]
(
  [ColumnName]
--  : 他更新 SQL
)
values
(
  @value
--  : 他更新値
)

מילת המפתח כאן היא "@@ROWCOUNT". @@ROWCOUNT יכול לאחזר את מספר השורות שעליהן הוחל SQL הקודם. הקוד הקודם מבצע תחילה את משפט העדכון, ואם הוא עודכן, @@ROWCOUNT מחזיר 1 או יותר, כך שהוא אינו מבצע את משפט ההוספה הבא. לעומת זאת, אם אין שורה מעודכנת במשפט העדכון, @@ROWCOUNT מחזירה 0, לכן בצע הוספה על-ידי שיפוט הצהרת IF.

מכיוון שה- SQL לעיל הוא תבנית, החלף את שמות העמודות והערכים שיש לעדכן בזמן המתאים. @value הוא רק שם משתנה, לכן החלף אותו בערך שברצונך לעדכן.