SQLite ทริกเกอร์ มุมมอง และดัชนีพร้อมตัวอย่าง
ในการใช้ชีวิตประจำวันของ SQLiteคุณจะต้องมีเครื่องมือการดูแลระบบบางอย่างบนฐานข้อมูลของคุณ คุณยังสามารถใช้เพื่อทำให้การสืบค้นฐานข้อมูลมีประสิทธิภาพมากขึ้นโดยการสร้างดัชนี หรือนำมาใช้ซ้ำได้มากขึ้นโดยการสร้างมุมมอง
SQLite รายละเอียด
มุมมองจะคล้ายกับตารางมาก แต่ Views นั้นเป็นตารางแบบลอจิคัล พวกเขาไม่ได้จัดเก็บทางกายภาพเหมือนตาราง มุมมองประกอบด้วยคำสั่ง Select
คุณสามารถกำหนดมุมมองสำหรับแบบสอบถามที่ซับซ้อนของคุณได้ และสามารถนำแบบสอบถามเหล่านี้กลับมาใช้ใหม่ได้ทุกเมื่อที่ต้องการ โดยการเรียกมุมมองโดยตรงแทนที่จะเขียนแบบสอบถามใหม่อีกครั้ง
สร้างคำสั่ง VIEW
เมื่อต้องการสร้างมุมมองบนฐานข้อมูล คุณสามารถใช้คำสั่ง CREATE VIEW ตามด้วยชื่อมุมมอง แล้วใส่แบบสอบถามที่คุณต้องการหลังจากนั้น
ตัวอย่าง: ในตัวอย่างต่อไปนี้เราจะสร้างมุมมองที่มีชื่อว่า “นักเรียนทุกคนดู” ในฐานข้อมูลตัวอย่าง “บทช่วยสอนSampleDB.db” ดังต่อไปนี้:
ขั้นตอน 1) เปิด My Computer และไปที่ไดเร็กทอรีต่อไปนี้ “C:\sqlite” แล้วเปิด “sqlite3.exe"
ขั้นตอน 2) เปิดฐานข้อมูล “บทช่วยสอนSampleDB.db” โดยคำสั่งต่อไปนี้:
ขั้นตอน 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;
ไม่ควรมีเอาต์พุตจากคำสั่งดังนี้:
ขั้นตอน 4) เพื่อให้แน่ใจว่ามุมมองถูกสร้างขึ้น คุณสามารถเลือกจากรายการมุมมองในฐานข้อมูลได้โดยรันคำสั่งต่อไปนี้:
SELECT name FROM sqlite_master WHERE type = 'view';
คุณควรจะได้เห็นวิว”นักเรียนทุกคนดู” ถูกส่งกลับ:
ขั้นตอน 5) ตอนนี้มุมมองของเราถูกสร้างขึ้นแล้ว คุณสามารถใช้มันเป็นตารางปกติได้ดังนี้:
SELECT * FROM AllStudentsView;
คำสั่งนี้จะสอบถามมุมมอง “AllStudents” และเลือกแถวทั้งหมดจากนั้นดังที่แสดงไว้ในภาพหน้าจอต่อไปนี้:
การดูชั่วคราว
มุมมองชั่วคราวคือมุมมองชั่วคราวสำหรับการเชื่อมต่อฐานข้อมูลปัจจุบันที่ใช้สร้างมุมมองนั้น หากคุณปิดการเชื่อมต่อฐานข้อมูล มุมมองชั่วคราวทั้งหมดจะถูกลบโดยอัตโนมัติ มุมมองชั่วคราวจะถูกสร้างขึ้นโดยใช้คำสั่งต่อไปนี้:
- สร้างมุมมองชั่วคราวหรือ
- สร้างมุมมองชั่วคราว
มุมมองชั่วคราวมีประโยชน์หากคุณต้องการดำเนินการบางอย่างในช่วงเวลานั้นและไม่ต้องการให้เป็นมุมมองถาวร ดังนั้น คุณเพียงแค่สร้างมุมมองชั่วคราว จากนั้นดำเนินการโดยใช้มุมมองนั้น 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;
ขั้นตอน 4) ตรวจสอบให้แน่ใจว่ามุมมองชั่วคราว “นักเรียนทั้งหมดดูชั่วคราว” ถูกสร้างขึ้นโดยการรันคำสั่งต่อไปนี้:
SELECT name FROM sqlite_temp_master WHERE type = 'view';
ขั้นตอน 5) ปิด sqlite3.exe แล้วเปิดใหม่อีกครั้ง
ขั้นตอน 6) เปิดการเชื่อมต่อกับฐานข้อมูล”บทช่วยสอนSampleDB.db” โดยคำสั่งต่อไปนี้:
.open TutorialsSampleDB.db
ขั้นตอน 7) รันคำสั่งต่อไปนี้เพื่อรับรายการมุมมองชั่วคราวที่สร้างขึ้นในฐานข้อมูล:
SELECT name FROM sqlite_temp_master WHERE type = 'view';
คุณไม่ควรเห็นผลลัพธ์ใดๆ เนื่องจากมุมมองชั่วคราวที่เราสร้างขึ้นจะถูกลบทิ้งเมื่อเราปิดการเชื่อมต่อฐานข้อมูลในขั้นตอนก่อนหน้า มิฉะนั้น ตราบใดที่คุณยังคงเชื่อมต่อกับฐานข้อมูลที่เปิดอยู่ คุณจะสามารถดูมุมมองชั่วคราวพร้อมข้อมูลได้
หมายเหตุ:
- คุณไม่สามารถใช้คำสั่ง 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 สร้างดัชนี
หากต้องการสร้างดัชนีบนคอลัมน์ คุณควรใช้คำสั่ง 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);
คุณไม่ควรไม่เห็นผลลัพธ์สำหรับสิ่งนี้:
ขั้นตอน 5) เพื่อให้แน่ใจว่าดัชนีถูกสร้างขึ้น คุณสามารถรันแบบสอบถามต่อไปนี้ ซึ่งจะแสดงรายการดัชนีที่สร้างขึ้นในตาราง Students:
PRAGMA index_list(Students);
คุณควรเห็นดัชนีที่เราเพิ่งสร้างกลับมา:
หมายเหตุ:
- ดัชนีสามารถสร้างขึ้นได้ไม่เพียงแต่ขึ้นอยู่กับคอลัมน์เท่านั้น แต่ขึ้นอยู่กับนิพจน์ด้วย บางสิ่งเช่นนี้:
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;
ฟังก์ชั่น "วันเวลา()" จะให้การประทับวันที่และเวลาปัจจุบันแก่คุณเมื่อมีคำสั่งแทรกเกิดขึ้น เพื่อให้เราสามารถบันทึกธุรกรรมการแทรกโดยเพิ่มการประทับเวลาอัตโนมัติลงในแต่ละธุรกรรม
คำสั่งควรจะทำงานได้สำเร็จ และคุณไม่ได้รับผลลัพธ์:
ตัวกระตุ้น”แทรก IntoStudentTrigger” จะเริ่มทำงานทุกครั้งที่คุณแทรกนักเรียนใหม่ในตารางนักเรียน “ใหม่” คำสำคัญหมายถึงค่าที่จะแทรก ตัวอย่างเช่น “new.StudentId” จะเป็นรหัสนักศึกษาที่จะใส่เข้าไป
ตอนนี้ เราจะทดสอบว่าทริกเกอร์ทำงานอย่างไรเมื่อเราแทรกนักเรียนใหม่
ขั้นตอน 4) เขียนคำสั่งต่อไปนี้เพื่อแทรกนักเรียนใหม่ลงในตารางนักเรียน:
INSERT INTO Students VALUES(11, 'guru11', 1, '1999-10-12');
ขั้นตอน 5) เขียนคำสั่งต่อไปนี้ซึ่งจะเลือกแถวทั้งหมดจาก “บันทึกนักศึกษา" โต๊ะ:
SELECT * FROM StudentsLog;
คุณควรเห็นแถวใหม่สำหรับนักเรียนใหม่ที่เราเพิ่งแทรก:
แถวนี้ถูกแทรกโดยทริกเกอร์ก่อนที่จะแทรกนักเรียนใหม่ด้วยรหัส 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';
คุณควรได้รับข้อความแสดงข้อผิดพลาดที่เราระบุไว้ในทริกเกอร์โดยบอกว่า “คุณไม่สามารถอัปเดตชื่อนักเรียนได้” ดังต่อไปนี้:
ขั้นตอน 5) รันคำสั่งต่อไปนี้ซึ่งจะเลือกรายชื่อนักเรียนจากตารางนักเรียน
SELECT StudentName FROM Students;
คุณจะเห็นว่าชื่อนักเรียน “แจ็ค” ยังคงเหมือนเดิมและไม่เปลี่ยนแปลง:
สรุป
มุมมอง ดัชนี และทริกเกอร์เป็นเครื่องมือที่มีประสิทธิภาพมากสำหรับการจัดการ SQLite ฐานข้อมูลคุณสามารถติดตามการดำเนินการแก้ไขข้อมูลเมื่อเกิดขึ้นบนตารางได้ นอกจากนี้ คุณยังสามารถเพิ่มประสิทธิภาพการดำเนินการเรียกค้นข้อมูลฐานข้อมูลโดยการสร้างดัชนี