SQL เพื่อกําหนดว่าข้อมูลชิ้นเดียวถูกดําเนินการโดยคีย์ในการปรับปรุงหรือแทรก

ปรับปรุงหน้า :
วันที่สร้างเพจ :

ในกระบวนการเช่นอัปเดตหากมีคีย์หรือแทรกถ้าไม่มีคีย์การเลือกมักจะดําเนินการตามคีย์และกระบวนการจะถูกกําหนดโดยตรวจสอบว่ามีกรณีหนึ่งกรณีหรือไม่ นอกจากนี้ SQL Server 2008 ยังเพิ่มคําสั่ง "merge" ที่อนุญาตให้คุณทําการปรับปรุงและแทรก (แล้วลบ) ด้วยคําสั่งเดียว อย่างไรก็ตามนี่เป็นการเปรียบเทียบตารางสองตารางและไม่เหมาะสําหรับข้อมูลเดียว

ที่จริงแล้วมีวิธีอัปเดตแถวได้อย่างง่ายดายโดยการกําหนดอัปเดตและแทรกโดยไม่ต้องตรวจสอบจํานวนระเบียนด้วยคําสั่งเลือก

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

คําสําคัญที่นี่คือ "@@ROWCOUNT" @@ROWCOUNTสามารถเรียกจํานวนแถวที่ใช้ SQL ก่อนหน้านี้ได้ โค้ดก่อนหน้านี้จะดําเนินการคําสั่ง Update ก่อน และถ้าได้รับการปรับปรุงแล้ว @@ROWCOUNTส่งกลับ 1 หรือมากกว่า ดังนั้นจะไม่ดําเนินการคําสั่ง Insert ถัดไป ในทางกลับกันถ้าไม่มีแถวใดได้รับการปรับปรุงในคําสั่ง Update @@ROWCOUNTจะส่งกลับ 0 ดังนั้นให้ดําเนินการการตัดสินคําสั่ง Insert by IF

เนื่องจาก SQL ข้างต้นเป็นแม่แบบ ให้แทนที่ชื่อคอลัมน์และค่าที่จะปรับปรุงในเวลาที่เหมาะสม @valueเป็นเพียงชื่อตัวแปรดังนั้นให้แทนที่ด้วยค่าที่คุณต้องการอัปเดต