SQLite ทริกเกอร์ มุมมอง และดัชนีพร้อมตัวอย่าง

ในการใช้ชีวิตประจำวันของ SQLiteคุณจะต้องมีเครื่องมือการดูแลระบบบางอย่างบนฐานข้อมูลของคุณ คุณยังสามารถใช้เพื่อทำให้การสืบค้นฐานข้อมูลมีประสิทธิภาพมากขึ้นโดยการสร้างดัชนี หรือนำมาใช้ซ้ำได้มากขึ้นโดยการสร้างมุมมอง

SQLite รายละเอียด

มุมมองจะคล้ายกับตารางมาก แต่ Views นั้นเป็นตารางแบบลอจิคัล พวกเขาไม่ได้จัดเก็บทางกายภาพเหมือนตาราง มุมมองประกอบด้วยคำสั่ง Select

คุณสามารถกำหนดมุมมองสำหรับแบบสอบถามที่ซับซ้อนของคุณได้ และสามารถนำแบบสอบถามเหล่านี้กลับมาใช้ใหม่ได้ทุกเมื่อที่ต้องการ โดยการเรียกมุมมองโดยตรงแทนที่จะเขียนแบบสอบถามใหม่อีกครั้ง

สร้างคำสั่ง VIEW

เมื่อต้องการสร้างมุมมองบนฐานข้อมูล คุณสามารถใช้คำสั่ง CREATE VIEW ตามด้วยชื่อมุมมอง แล้วใส่แบบสอบถามที่คุณต้องการหลังจากนั้น

ตัวอย่าง: ในตัวอย่างต่อไปนี้เราจะสร้างมุมมองที่มีชื่อว่า “นักเรียนทุกคนดู” ในฐานข้อมูลตัวอย่าง “บทช่วยสอนSampleDB.db” ดังต่อไปนี้:

ขั้นตอน 1) เปิด My Computer และไปที่ไดเร็กทอรีต่อไปนี้ “C:\sqlite” แล้วเปิด “sqlite3.exe"

SQLite รายละเอียด

ขั้นตอน 2) เปิดฐานข้อมูล “บทช่วยสอนSampleDB.db” โดยคำสั่งต่อไปนี้:

SQLite รายละเอียด

ขั้นตอน 3) ต่อไปนี้เป็นรูปแบบพื้นฐานของคำสั่ง sqlite3 เพื่อสร้างมุมมอง

CREATE VIEW AllStudentsView
AS
  SELECT 
    s.StudentId,
    s.StudentName,
    s.DateOfBirth,
    d.DepartmentName
FROM Students AS s
INNER JOIN Departments AS d ON s.DepartmentId = d.DepartmentId;

ไม่ควรมีเอาต์พุตจากคำสั่งดังนี้:

SQLite รายละเอียด

ขั้นตอน 4) เพื่อให้แน่ใจว่ามุมมองถูกสร้างขึ้น คุณสามารถเลือกจากรายการมุมมองในฐานข้อมูลได้โดยรันคำสั่งต่อไปนี้:

SELECT name FROM sqlite_master WHERE type = 'view';

คุณควรจะได้เห็นวิว”นักเรียนทุกคนดู” ถูกส่งกลับ:

SQLite รายละเอียด

ขั้นตอน 5) ตอนนี้มุมมองของเราถูกสร้างขึ้นแล้ว คุณสามารถใช้มันเป็นตารางปกติได้ดังนี้:

SELECT * FROM AllStudentsView;

คำสั่งนี้จะสอบถามมุมมอง “AllStudents” และเลือกแถวทั้งหมดจากนั้นดังที่แสดงไว้ในภาพหน้าจอต่อไปนี้:

SQLite รายละเอียด

การดูชั่วคราว

มุมมองชั่วคราวคือมุมมองชั่วคราวสำหรับการเชื่อมต่อฐานข้อมูลปัจจุบันที่ใช้สร้างมุมมองนั้น หากคุณปิดการเชื่อมต่อฐานข้อมูล มุมมองชั่วคราวทั้งหมดจะถูกลบโดยอัตโนมัติ มุมมองชั่วคราวจะถูกสร้างขึ้นโดยใช้คำสั่งต่อไปนี้:

  • สร้างมุมมองชั่วคราวหรือ
  • สร้างมุมมองชั่วคราว

มุมมองชั่วคราวมีประโยชน์หากคุณต้องการดำเนินการบางอย่างในช่วงเวลานั้นและไม่ต้องการให้เป็นมุมมองถาวร ดังนั้น คุณเพียงแค่สร้างมุมมองชั่วคราว จากนั้นดำเนินการโดยใช้มุมมองนั้น Later เมื่อคุณปิดการเชื่อมต่อกับฐานข้อมูลก็จะถูกลบโดยอัตโนมัติ

ตัวอย่าง:

ในตัวอย่างต่อไปนี้ เราจะเปิดการเชื่อมต่อฐานข้อมูล จากนั้นสร้างมุมมองชั่วคราว

หลังจากนั้นเราจะปิดการเชื่อมต่อนั้น และเราจะตรวจสอบว่ามุมมองชั่วคราวยังคงมีอยู่หรือไม่

ขั้นตอน 1) เปิด sqlite3.exe จากไดเร็กทอรี “C:\sqlite” ดังที่ได้อธิบายไปแล้ว

ขั้นตอน 2) เปิดการเชื่อมต่อกับฐานข้อมูล”บทช่วยสอนSampleDB.db” โดยรันคำสั่งต่อไปนี้:

.open TutorialsSampleDB.db

ขั้นตอน 3) เขียนคำสั่งต่อไปนี้เพื่อสร้างมุมมองชั่วคราว “นักเรียนทั้งหมดดูชั่วคราว"

CREATE TEMP VIEW AllStudentsTempView
AS
  SELECT 
    s.StudentId,
    s.StudentName,
    s.DateOfBirth,
    d.DepartmentName
FROM Students AS s
INNER JOIN Departments AS d ON s.DepartmentId = d.DepartmentId;

SQLite รายละเอียด

ขั้นตอน 4) ตรวจสอบให้แน่ใจว่ามุมมองชั่วคราว “นักเรียนทั้งหมดดูชั่วคราว” ถูกสร้างขึ้นโดยการรันคำสั่งต่อไปนี้:

SELECT name FROM sqlite_temp_master WHERE type = 'view';

SQLite รายละเอียด

ขั้นตอน 5) ปิด sqlite3.exe แล้วเปิดใหม่อีกครั้ง

ขั้นตอน 6) เปิดการเชื่อมต่อกับฐานข้อมูล”บทช่วยสอนSampleDB.db” โดยคำสั่งต่อไปนี้:

.open TutorialsSampleDB.db

ขั้นตอน 7) รันคำสั่งต่อไปนี้เพื่อรับรายการมุมมองชั่วคราวที่สร้างขึ้นในฐานข้อมูล:

SELECT name FROM sqlite_temp_master WHERE type = 'view';

คุณไม่ควรเห็นผลลัพธ์ใดๆ เนื่องจากมุมมองชั่วคราวที่เราสร้างขึ้นจะถูกลบทิ้งเมื่อเราปิดการเชื่อมต่อฐานข้อมูลในขั้นตอนก่อนหน้า มิฉะนั้น ตราบใดที่คุณยังคงเชื่อมต่อกับฐานข้อมูลที่เปิดอยู่ คุณจะสามารถดูมุมมองชั่วคราวพร้อมข้อมูลได้

SQLite รายละเอียด

หมายเหตุ:

  • คุณไม่สามารถใช้คำสั่ง INSERT, DELETE หรือ UPDATE กับมุมมองได้ มีเพียงคุณเท่านั้นที่สามารถใช้คำสั่ง “select from views” ดังที่แสดงในขั้นตอนที่ 5 ในตัวอย่าง CREATE View
  • หากต้องการลบ VIEW คุณสามารถใช้คำสั่ง "DROP VIEW":
DROP VIEW AllStudentsView;

เพื่อให้แน่ใจว่ามุมมองถูกลบออก คุณสามารถรันคำสั่งต่อไปนี้ซึ่งจะแสดงรายการมุมมองในฐานข้อมูล:

SELECT name FROM sqlite_master WHERE type = 'view';

คุณจะไม่พบมุมมองใดๆ ที่ถูกส่งกลับมา เนื่องจากมุมมองถูกลบไปแล้ว ดังนี้:

SQLite รายละเอียด

SQLite ดัชนี

หากคุณมีหนังสือและต้องการค้นหาคำสำคัญในหนังสือเล่มนั้น คุณจะค้นหาคำสำคัญนั้นในดัชนีของหนังสือ จากนั้น คุณจะไปที่หมายเลขหน้าของคำหลักนั้นเพื่ออ่านข้อมูลเพิ่มเติมเกี่ยวกับคำหลักนั้น

อย่างไรก็ตาม หากไม่มีดัชนีหรือหมายเลขหน้าในหนังสือเล่มนั้น คุณจะต้องสแกนหนังสือทั้งเล่มตั้งแต่ต้นจนจบจนกว่าจะพบคำสำคัญที่คุณกำลังค้นหา ซึ่งเป็นเรื่องยากมาก โดยเฉพาะอย่างยิ่งเมื่อคุณมีดัชนีและขั้นตอนการค้นหาคำสำคัญนั้นค่อนข้างช้า

ดัชนีใน SQLite (และแนวคิดเดียวกันนี้ใช้ได้กับสิ่งอื่น ระบบจัดการฐานข้อมูล เช่นกัน) ทำงานในลักษณะเดียวกับดัชนีที่พบในด้านหลังของหนังสือ

เมื่อคุณค้นหาแถวบางแถวใน SQLite ตารางที่มีเกณฑ์การค้นหา SQLite จะค้นหาทุกแถวของตารางจนกว่าจะพบแถวที่คุณกำลังมองหาที่ตรงกับเกณฑ์การค้นหา และกระบวนการนั้นจะช้ามากเมื่อคุณมีโต๊ะที่ใหญ่ขึ้น

ดัชนีจะเร่งการค้นหาข้อมูลและจะช่วยดึงข้อมูลจากตาราง ดัชนีถูกกำหนดไว้ในคอลัมน์ของตาราง

การปรับปรุงประสิทธิภาพด้วยดัชนี:

ดัชนีสามารถปรับปรุงประสิทธิภาพการค้นหาข้อมูลบนตารางได้ เมื่อคุณสร้างดัชนีในคอลัมน์ SQLite จะสร้างโครงสร้างข้อมูลสำหรับดัชนีนั้นโดยที่แต่ละค่าของฟิลด์มีตัวชี้ไปยังแถวทั้งหมดที่มีค่านั้นอยู่

จากนั้น หากคุณเรียกใช้แบบสอบถามโดยมีเงื่อนไขการค้นหาในคอลัมน์ที่เป็นส่วนหนึ่งของดัชนี SQLite จะค้นหาค่าในดัชนีก่อน SQLite จะไม่สแกนทั้งตารางเพื่อหามัน จากนั้นมันจะอ่านตำแหน่งที่ค่าชี้ไปที่แถวของตาราง SQLite จะค้นหาแถวในตำแหน่งนั้นและดึงข้อมูลออกมา

อย่างไรก็ตาม หากคอลัมน์ที่คุณกำลังค้นหาไม่ใช่ส่วนหนึ่งของดัชนี SQLite จะทำการสแกนค่าคอลัมน์เพื่อค้นหาข้อมูลที่คุณกำลังมองหา โดยปกติจะเป็นกระบวนการที่ช้ากว่าหากไม่มีดัชนี

ลองนึกภาพหนังสือที่ไม่มีดัชนีอยู่ และคุณจำเป็นต้องค้นหาคำที่เฉพาะเจาะจง คุณจะสแกนหนังสือทั้งเล่มตั้งแต่หน้าแรกจนถึงหน้าสุดท้ายเพื่อค้นหาคำนั้น อย่างไรก็ตาม หากคุณมีดัชนีในหนังสือเล่มนั้น คุณจะต้องมองหาคำในหนังสือเล่มนั้นก่อน รับหมายเลขหน้าซึ่งอยู่ จากนั้นนำทางไปยังหมายเลขนั้น ซึ่งจะเร็วกว่าการสแกนหนังสือทั้งเล่มจากปกหนึ่งไปอีกปกหนึ่งมาก

SQLite สร้างดัชนี

หากต้องการสร้างดัชนีบนคอลัมน์ คุณควรใช้คำสั่ง CREATE INDEX และคุณควรกำหนดไว้ดังนี้:

  • คุณต้องระบุชื่อของดัชนีหลังคำสั่ง CREATE INDEX
  • หลังชื่อของดัชนี คุณต้องใส่คีย์เวิร์ด “ON” ตามด้วยชื่อตารางที่จะสร้างดัชนี
  • จากนั้นรายการชื่อคอลัมน์ที่ใช้สำหรับดัชนี
  • คุณสามารถใช้คำสำคัญต่อไปนี้ “ASC” หรือ “DESC” หลังชื่อคอลัมน์ใดๆ เพื่อระบุลำดับการจัดเรียงที่ใช้ในการจัดลำดับข้อมูลดัชนี

ตัวอย่าง:

ในตัวอย่างต่อไปนี้เราจะสร้างดัชนี “ดัชนีชื่อนักเรียน” บนโต๊ะนักเรียนใน “นักเรียน” ฐานข้อมูลดังต่อไปนี้:

ขั้นตอน 1) นำทางไปยังโฟลเดอร์ “C:\sqlite” ดังที่ได้อธิบายไปแล้ว

ขั้นตอน 2) เปิด sqlite3.exe

ขั้นตอน 3) เปิดฐานข้อมูล “บทช่วยสอนSampleDB.db” โดยคำสั่งต่อไปนี้:

.open TutorialsSampleDB.db

ขั้นตอน 4) สร้างดัชนีใหม่ “ดัชนีชื่อนักเรียน” โดยใช้คำสั่งดังต่อไปนี้:

CREATE INDEX StudentNameIndex ON Students(StudentName);

คุณไม่ควรไม่เห็นผลลัพธ์สำหรับสิ่งนี้:

SQLite ดัชนี

ขั้นตอน 5) เพื่อให้แน่ใจว่าดัชนีถูกสร้างขึ้น คุณสามารถรันแบบสอบถามต่อไปนี้ ซึ่งจะแสดงรายการดัชนีที่สร้างขึ้นในตาราง Students:

PRAGMA index_list(Students);

คุณควรเห็นดัชนีที่เราเพิ่งสร้างกลับมา:

SQLite ดัชนี

หมายเหตุ:

  • ดัชนีสามารถสร้างขึ้นได้ไม่เพียงแต่ขึ้นอยู่กับคอลัมน์เท่านั้น แต่ขึ้นอยู่กับนิพจน์ด้วย บางสิ่งเช่นนี้:
CREATE INDEX OrderTotalIndex ON OrderItems(OrderId, Quantity*Price);

“OrderTotalIndex” จะขึ้นอยู่กับคอลัมน์ OrderId และการคูณของค่าคอลัมน์จำนวนและค่าคอลัมน์ราคาด้วย ดังนั้นการสืบค้นใดๆ สำหรับ "OrderId" และ "Quantity*Price" จะมีประสิทธิภาพเนื่องจากการสืบค้นจะใช้ดัชนี

  • หากคุณระบุคำสั่ง WHERE ในคำสั่ง CREATE INDEX ดัชนีจะเป็นดัชนีบางส่วน ในกรณีนี้ จะมีรายการในดัชนีสำหรับแถวที่ตรงกับเงื่อนไขในคำสั่ง WHERE เท่านั้น ตัวอย่างเช่น ในดัชนีต่อไปนี้:
    CREATE INDEX OrderTotalIndexForLargeQuantities ON OrderItems(OrderId, Quantity*Price)
    WHERE Quantity > 10000;

    ( ในตัวอย่างข้างต้น ดัชนีจะเป็นดัชนีบางส่วนเนื่องจากมีการระบุส่วนคำสั่ง WHERE ไว้ ในกรณีนี้ ดัชนีจะถูกนำไปใช้กับคำสั่งซื้อที่มีมูลค่าปริมาณมากกว่า 10000 เท่านั้น โปรดทราบว่าดัชนีนี้เรียกว่าดัชนีบางส่วน เนื่องจากส่วนคำสั่ง WHERE ไม่ใช่นิพจน์ที่ใช้ อย่างไรก็ตาม คุณสามารถใช้นิพจน์กับดัชนีปกติได้)

  • คุณสามารถใช้คำสั่ง CREATE UNIQUE INDEX แทน CREATE INDEX เพื่อป้องกันรายการที่ซ้ำกันสำหรับคอลัมน์ ดังนั้นค่าทั้งหมดสำหรับคอลัมน์ที่จัดทำดัชนีจะไม่ซ้ำกัน
  • หากต้องการลบดัชนี ให้ใช้คำสั่ง DROP INDEX ตามด้วยชื่อดัชนีที่ต้องการลบ

SQLite ทริกเกอร์

รู้เบื้องต้นเกี่ยวกับ SQLite ทริกเกอร์

ทริกเกอร์คือการดำเนินการที่กำหนดไว้ล่วงหน้าโดยอัตโนมัติซึ่งจะดำเนินการเมื่อมีการดำเนินการเฉพาะเจาะจงเกิดขึ้นบนตารางฐานข้อมูล ทริกเกอร์สามารถกำหนดให้ทำงานเมื่อใดก็ตามที่มีการดำเนินการต่อไปนี้เกิดขึ้นบนตาราง:

  • INSERT ลงในตาราง
  • ลบแถวออกจากตาราง
  • อัปเดตหนึ่งในคอลัมน์ของตาราง

SQLite รองรับทริกเกอร์ FOR EACH ROW เพื่อให้การดำเนินการที่กำหนดไว้ล่วงหน้าในทริกเกอร์จะถูกดำเนินการกับแถวทั้งหมดที่เกี่ยวข้องกับการดำเนินการที่เกิดขึ้นในตาราง (ไม่ว่าจะเป็นการแทรก ลบ หรืออัปเดต)

SQLite สร้างทริกเกอร์

ในการสร้าง TRIGGER ใหม่ คุณสามารถใช้คำสั่ง CREATE TRIGGER ได้ดังต่อไปนี้:

  • หลังจาก CREATE TRIGGER คุณควรระบุชื่อทริกเกอร์
  • หลังจากชื่อทริกเกอร์ คุณต้องระบุว่าควรใช้ชื่อทริกเกอร์เมื่อใด คุณมีสามทางเลือก:
  • ก่อน – ทริกเกอร์จะถูกดำเนินการก่อนคำสั่ง INSERT, UPDATE หรือคำสั่งลบที่ระบุ
  • After – ทริกเกอร์จะถูกดำเนินการหลังจาก INSERT, UPDATE หรือคำสั่งลบที่ระบุ
  • แทน - มันจะแทนที่การกระทำที่เกิดขึ้นซึ่งทริกเกอร์ด้วยคำสั่งที่ระบุใน TRIGGER ทริกเกอร์ INSTEAD OF ไม่สามารถใช้ได้กับตาราง เฉพาะกับมุมมองเท่านั้น
  • จากนั้น คุณต้องระบุประเภทของการกระทำ ทริกเกอร์จะเริ่มทำงานเมื่อมันเกิดขึ้น ลบ แทรก หรืออัปเดต
  • คุณสามารถเลือกชื่อคอลัมน์ที่ไม่บังคับเพื่อให้ทริกเกอร์ไม่เริ่มทำงาน เว้นแต่ว่าจะมีการดำเนินการกับคอลัมน์นั้น
  • จากนั้นคุณต้องระบุชื่อตารางที่จะสร้างทริกเกอร์
  • ภายในเนื้อหาของทริกเกอร์ คุณควรระบุคำสั่งที่ควรดำเนินการสำหรับแต่ละแถวเมื่อทริกเกอร์เริ่มทำงาน
  • ทริกเกอร์จะถูกเปิดใช้งาน (เริ่มทำงาน) ขึ้นอยู่กับประเภทของคำสั่งที่ระบุในคำสั่งสร้างทริกเกอร์เท่านั้น ตัวอย่างเช่น:

    • ทริกเกอร์ BEFORE INSERT จะถูกเปิดใช้งาน (เริ่มทำงาน) ก่อนคำสั่งแทรกใด ๆ
    • ทริกเกอร์ AFTER UPDATE จะถูกเปิดใช้งาน (เริ่มทำงาน) หลังจากคำสั่งอัพเดตใดๆ ... และอื่นๆ

    ภายในทริกเกอร์ คุณสามารถอ้างถึงค่าที่เพิ่มเข้ามาใหม่ได้โดยใช้คีย์เวิร์ด “ใหม่” นอกจากนี้ คุณยังสามารถอ้างถึงค่าที่ถูกลบหรืออัปเดตได้โดยใช้คีย์เวิร์ดเก่า ดังต่อไปนี้:

    • ทริกเกอร์ภายใน INSERT - สามารถใช้คำหลักใหม่ได้
    • ภายในทริกเกอร์ UPDATE - สามารถใช้คำหลักใหม่และเก่าได้
    • ภายในทริกเกอร์ DELETE - สามารถใช้คำหลักเก่าได้

    ตัวอย่าง

    ต่อไปนี้เราจะสร้างทริกเกอร์ที่จะทำงานก่อนที่จะแทรกนักเรียนใหม่เข้าไปใน “นักเรียน" โต๊ะ.

    มันจะบันทึกนักเรียนที่เพิ่งแทรกเข้าไปในตาราง”บันทึกนักศึกษา” พร้อมประทับเวลาอัตโนมัติสำหรับวันที่และเวลาปัจจุบันเมื่อคำสั่งแทรกเกิดขึ้น ดังต่อไปนี้:

    ขั้นตอน 1) นำทางไปยังไดเร็กทอรี “C:\sqlite” และเรียกใช้ sqlite3.exe

    ขั้นตอน 2) เปิดฐานข้อมูล “บทช่วยสอนSampleDB.db” โดยรันคำสั่งต่อไปนี้:

    .open TutorialsSampleDB.db

    ขั้นตอน 3) สร้างทริกเกอร์ “แทรก IntoStudentTrigger” โดยการรันคำสั่งต่อไปนี้:

    CREATE TRIGGER InsertIntoStudentTrigger 
           BEFORE INSERT ON Students
    BEGIN
      INSERT INTO StudentsLog VALUES(new.StudentId, datetime(), 'Insert');
    END;

    ฟังก์ชั่น "วันเวลา()" จะให้การประทับวันที่และเวลาปัจจุบันแก่คุณเมื่อมีคำสั่งแทรกเกิดขึ้น เพื่อให้เราสามารถบันทึกธุรกรรมการแทรกโดยเพิ่มการประทับเวลาอัตโนมัติลงในแต่ละธุรกรรม

    คำสั่งควรจะทำงานได้สำเร็จ และคุณไม่ได้รับผลลัพธ์:

    SQLite ทริกเกอร์

    ตัวกระตุ้น”แทรก IntoStudentTrigger” จะเริ่มทำงานทุกครั้งที่คุณแทรกนักเรียนใหม่ในตารางนักเรียน “ใหม่” คำสำคัญหมายถึงค่าที่จะแทรก ตัวอย่างเช่น “new.StudentId” จะเป็นรหัสนักศึกษาที่จะใส่เข้าไป

    ตอนนี้ เราจะทดสอบว่าทริกเกอร์ทำงานอย่างไรเมื่อเราแทรกนักเรียนใหม่

    ขั้นตอน 4) เขียนคำสั่งต่อไปนี้เพื่อแทรกนักเรียนใหม่ลงในตารางนักเรียน:

    INSERT INTO Students VALUES(11, 'guru11', 1, '1999-10-12');

    ขั้นตอน 5) เขียนคำสั่งต่อไปนี้ซึ่งจะเลือกแถวทั้งหมดจาก “บันทึกนักศึกษา" โต๊ะ:

    SELECT * FROM StudentsLog;

    คุณควรเห็นแถวใหม่สำหรับนักเรียนใหม่ที่เราเพิ่งแทรก:

    SQLite ทริกเกอร์

    แถวนี้ถูกแทรกโดยทริกเกอร์ก่อนที่จะแทรกนักเรียนใหม่ด้วยรหัส 11

    ในตัวอย่างนี้เราใช้ทริกเกอร์ “ แทรก IntoStudentTrigger ” เราสร้างขึ้นเพื่อบันทึกธุรกรรมแทรกใด ๆ ในตาราง “บันทึกนักศึกษา” โดยอัตโนมัติ เช่นเดียวกับที่คุณสามารถบันทึกการอัปเดตหรือลบคำสั่งต่างๆ

    การป้องกันการอัปเดตโดยไม่ได้ตั้งใจด้วยทริกเกอร์:

    การใช้ทริกเกอร์ BEFORE UPDATE บนตาราง คุณสามารถป้องกันคำสั่งอัพเดตในคอลัมน์ตามนิพจน์ได้

    ตัวอย่าง

    ในตัวอย่างต่อไปนี้ เราจะป้องกันไม่ให้คำสั่งอัปเดตใดๆ อัปเดตคอลัมน์ “studentname” ในตาราง Students:

    ขั้นตอน 1) นำทางไปยังไดเร็กทอรี “C:\sqlite” และเรียกใช้ sqlite3.exe

    ขั้นตอน 2) เปิดฐานข้อมูล “บทช่วยสอนSampleDB.db” โดยรันคำสั่งต่อไปนี้:

    .open TutorialsSampleDB.db

    ขั้นตอน 3) สร้างทริกเกอร์ใหม่ “ป้องกัน UpdateStudentName" บนโต๊ะ "นักเรียน” โดยการรันคำสั่งต่อไปนี้

    CREATE TRIGGER preventUpdateStudentName
    BEFORE UPDATE OF StudentName ON Students
    FOR EACH ROW
    BEGIN
        SELECT RAISE(ABORT, 'You cannot update studentname');
    END;

    "ยก” คำสั่งจะทำให้เกิดข้อผิดพลาดพร้อมข้อความแสดงข้อผิดพลาด “ คุณไม่สามารถอัปเดตชื่อนักเรียนได้ “ จากนั้นจะป้องกันไม่ให้คำสั่ง update ดำเนินการ

    ตอนนี้ เราจะตรวจสอบว่าทริกเกอร์ทำงานได้ดี และจะป้องกันการอัปเดตใดๆ สำหรับคอลัมน์ชื่อนักเรียน

    ขั้นตอน 4) รันคำสั่งอัปเดตต่อไปนี้ ซึ่งจะอัปเดตชื่อนักเรียน “ช่องเสียบ" เป็น "Jack1"

    UPDATE Students SET StudentName = 'Jack1' WHERE StudentName = 'Jack';

    คุณควรได้รับข้อความแสดงข้อผิดพลาดที่เราระบุไว้ในทริกเกอร์โดยบอกว่า “คุณไม่สามารถอัปเดตชื่อนักเรียนได้” ดังต่อไปนี้:

    SQLite ทริกเกอร์

    ขั้นตอน 5) รันคำสั่งต่อไปนี้ซึ่งจะเลือกรายชื่อนักเรียนจากตารางนักเรียน

    SELECT StudentName FROM Students;

    คุณจะเห็นว่าชื่อนักเรียน “แจ็ค” ยังคงเหมือนเดิมและไม่เปลี่ยนแปลง:

    SQLite ทริกเกอร์

    สรุป

    มุมมอง ดัชนี และทริกเกอร์เป็นเครื่องมือที่มีประสิทธิภาพมากสำหรับการจัดการ SQLite ฐานข้อมูลคุณสามารถติดตามการดำเนินการแก้ไขข้อมูลเมื่อเกิดขึ้นบนตารางได้ นอกจากนี้ คุณยังสามารถเพิ่มประสิทธิภาพการดำเนินการเรียกค้นข้อมูลฐานข้อมูลโดยการสร้างดัชนี