Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เพิ่มและลดค่าแถว 1 ใน MySQL ด้วย Stored Procedure?


ขั้นแรกให้เราสร้างตารางเพื่อเพิ่มและลดค่าแถวโดย 1 ต่อไปนี้เป็นแบบสอบถาม -

mysql> สร้างตาราง IncrementAndDecrementValue −> ( −> UserId int, −> UserScores int −> ); ตกลง ตกลง 0 แถวได้รับผลกระทบ (0.60 วินาที)

แทรกบางระเบียนในตารางโดยใช้คำสั่งแทรก แบบสอบถามมีดังต่อไปนี้ −

mysql> แทรกลงในค่า IncrementAndDecrementValue (101,20000) แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.13 วินาที) mysql> แทรกลงในค่า IncrementAndDecrementValue (102,30000); แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.20 วินาที) mysql> แทรก ลงในค่า IncrementAndDecrementValue (103,40000);Query OK, 1 แถวได้รับผลกระทบ (0.11 วินาที)

แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select แบบสอบถามมีดังต่อไปนี้ −

mysql> เลือก *จาก IncrementAndDecrementValue;

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+---------+-----------+| รหัสผู้ใช้ | UserScores |+---------+-----------+| 101 | 20000 || 102 | 30000 || 103 | 40000 |+-------+-----------+3 แถวในชุด (0.00 วินาที)

นี่คือขั้นตอนการจัดเก็บของฉันในการเพิ่มและลดค่าแถวโดย 1

mysql> delimiter //mysql> สร้างโพรซีเดอร์ IncrementAndDecrementRowValueByOne() −> start −> ประกาศ int แรก; −> ประกาศ int ที่สอง; −> set first =(เลือก UserScores จาก IncrementAndDecrementValue โดยที่ UserId =101); −> ตั้งค่าวินาที =(เลือก UserScores จาก IncrementAndDecrementValue โดยที่ UserId =102); −> อัปเดต IncrementAndDecrementValue ตั้งค่า UserScores =first-1 โดยที่ UserId =101; −> อัปเดต IncrementAndDecrementValue ตั้งค่า UserScores =วินาที+1 โดยที่ UserId =102; −> end //Query OK, 0 แถวได้รับผลกระทบ (0.17 วินาที)mysql> delimiter;

เรียกกระบวนงานที่เก็บไว้โดยใช้คำสั่ง CALL แบบสอบถามมีดังต่อไปนี้ −

mysql> เรียก IncrementAndDecrementRowValueByOne(); สืบค้นตกลง 1 แถวได้รับผลกระทบ (0.24 วินาที)

ตรวจสอบว่าค่าแถวถูกอัพเดตหรือไม่ใช้คำสั่ง select แบบสอบถามมีดังต่อไปนี้ −

mysql> เลือก *จาก IncrementAndDecrementValue;

ต่อไปนี้เป็นผลลัพธ์ -

<ก่อนหน้า>+---------+-----------+| รหัสผู้ใช้ | UserScores |+---------+-----------+| 101 | 2542 || 102 | 30001 || 103 | 40000 |+-------+-----------+3 แถวในชุด (0.00 วินาที)

เราได้ลดค่า 20000 ถึง 19999 และเพิ่มขึ้น 30000 ถึง 30001