SQLite ทริกเกอร์
เรียกฐานข้อมูล SQLite เป็นฟังก์ชั่นการโทรกลับก็จะดำเนินการโดยอัตโนมัติเมื่อมีการโทร / เหตุการณ์ฐานข้อมูลที่ระบุเกิดขึ้น ต่อไปนี้เป็นจุดหลักใน SQLite ไก: SQLiteทริกเกอร์ (Trigger) เป็นฟังก์ชั่นการโทรกลับของฐานข้อมูลก็จะดำเนินการโดยอัตโนมัติ / รับโทรศัพท์เมื่อมีเหตุการณ์ฐานข้อมูลที่ระบุเกิดขึ้นต่อไปนี้เป็นประเด็นหลักเกี่ยวกับการเรียก SQLite (Trigger) ของ:
ทริกเกอร์ SQLite (Trigger) ทริกเกอร์สามารถระบุได้ในช่วงเวลาของการเกิดขึ้นของฐานข้อมูลเฉพาะตารางลบแทรกหรืออัปเดตหรือเรียกเมื่อหนึ่งหรือคอลัมน์ที่ระบุเพิ่มเติมของการปรับปรุงตารางเกิดขึ้น
SQLite สนับสนุนเฉพาะสำหรับแต่ละทริกเกอร์ ROW (Trigger) ไม่ได้สำหรับแต่ละทริกเกอร์งบ (Trigger) ดังนั้นการระบุอย่างชัดเจนสำหรับแถวแต่ละคนเป็นตัวเลือก
เมื่อข้อและทริกเกอร์ (Trigger) การกระทำที่อาจเข้าถึงได้โดยใช้รูปแบบNEW.column ชื่อและ OLD.column ชื่อลำดับที่แทรกลบหรือปรับปรุงองค์ประกอบแถวคอลัมน์ชื่อมีความเกี่ยวข้องกับทริกเกอร์จากคอลัมน์ตารางชื่อ
เมื่อข้อถ้าให้เป็นจริงเฉพาะเมื่อข้อระบุแถวที่จะรันคำสั่ง หากเมื่อข้อจะถูกดำเนินการคำสั่ง SQL สำหรับแถวทั้งหมด
หลังจากที่การดำเนินงานของการเรียกก่อนหรือหลังคำหลักที่กำหนดเมื่อมีการกระทำการเรียกการตัดสินใจที่จะแทรกอยู่ในสายที่เกี่ยวข้องหรือก่อนที่จะลบหรือปรับเปลี่ยน
เมื่อตารางที่เกี่ยวข้องกับการทริกเกอร์ที่ถูกลบโดยอัตโนมัติลบทริกเกอร์ (Trigger)
การปรับเปลี่ยนตารางจะต้องมีอยู่ในฐานข้อมูลเดียวกันกับที่ทำให้มีการแนบตารางหรือมุมมองและต้องใช้เพียงtablename แทน database.tablename
เพิ่มฟังก์ชั่นพิเศษ SQL () สามารถใช้ในการเรียกข้อยกเว้นภายในโปรแกรม
ไวยากรณ์
สร้างทริกเกอร์ (Trigger) ไวยากรณ์พื้นฐานจะเป็นดังนี้:
สร้าง trigger_name TRIGGER [ก่อน | ภายหลัง] EVENT_NAME ON table_name BEGIN - เรียกตรรกะที่นี่ .... end;
นี่ EVENT_NAME สามารถระบุไว้ในตาราง table_nameแทรกลบและการดำเนินงานการอัพเดตฐานข้อมูล คุณสามารถเลือกที่ระบุสำหรับแต่ละแถวหลังชื่อตาราง
ต่อไปนี้ที่ระบุไว้ในการดำเนินการปรับปรุงในหนึ่งหรือมากกว่าตารางในคอลัมน์สร้างทริกเกอร์ (Trigger) ไวยากรณ์:
CREATE TRIGGER trigger_name [ก่อน | ภายหลัง] ปรับปรุงคอลัมน์ ON table_name BEGIN - เรียกตรรกะที่นี่ .... end;
ตัวอย่าง
ให้เราสมมติสถานการณ์ที่เราต้องการที่จะใส่เข้าไปใน บริษัท ตารางที่สร้างขึ้นใหม่ (ถ้ามีอยู่แล้วให้ลบสร้างขึ้นใหม่) ในแต่ละการทดสอบการตรวจสอบการเก็บบันทึกข้อมูลไปนี้:
SQLite> สร้าง บริษัท ตาราง ( ID INT คีย์หลักไม่เป็นโมฆะ, ชื่อ: ข้อความไม่เป็นโมฆะ, อายุ INT NOT NULL, ที่อยู่ CHAR (50), REAL เงินเดือน );
เพื่อรักษาทดลองการตรวจสอบเราจะสร้างตารางใหม่ที่เรียกว่าการตรวจสอบ เมื่อใดก็ตามที่ตาราง บริษัท มีรายการบันทึกใหม่ข้อความเข้าสู่ระบบจะถูกแทรก:
SQLite> สร้างตรวจสอบตาราง ( emp_id INT NOT NULL, ENTRY_DATE ข้อความไม่เป็นโมฆะ );
นี่คือรหัสตรวจสอบบันทึกประจำ emp_id ID จากตาราง บริษัท วันที่จะทำให้การประทับเวลาจะถูกสร้างขึ้นเมื่อ บริษัท ถูกบันทึกไว้ ดังนั้นตอนนี้ให้เราสร้างทริกเกอร์บนโต๊ะ บริษัท ฯ ดังนี้
SQLite> สร้าง audit_log TRIGGER หลัง INSERT ในหุ้น BEGIN INSERT INTO ตรวจสอบ (emp_id, ENTRY_DATE) VALUES (new.ID, วันที่และเวลา ( 'วันนี้')); end;
ขณะนี้เราจะเริ่มต้นที่จะแทรกบันทึกในตาราง บริษัท นี้จะนำไปสู่การสร้างตารางการตรวจสอบการเข้าสู่ระบบการตรวจสอบ ดังนั้นขอสร้างระเบียนในตาราง บริษัท ฯ ดังต่อไปนี้:
SQLite> แทรกใน บริษัท (ID ชื่ออายุที่อยู่ Salary) VALUES (1, 'พอล', 32, 'แคลิฟอร์เนีย' 20,000.00);
นี้จะสร้างบันทึกใน บริษัท ตารางต่อไปนี้:
ID NAME เงินเดือนอายุที่อยู่ ---------- ---------- ---------- ---------- ---------- 1 เปาโล 32 20,000.0 แคลิฟอร์เนีย
ในขณะเดียวกันเราจะสร้างบันทึกในตารางการตรวจสอบที่ บันทึกนี้เป็นผลมาจากทริกเกอร์ซึ่งเป็นทริกเกอร์เราแทรกการดำเนินงานบนโต๊ะสร้าง บริษัท (Trigger) ในทำนองเดียวกันสามารถสร้างทริกเกอร์ในการปรับปรุงและลบการดำเนินงาน (Trigger)
emp_id ENTRY_DATE ---------- ------------------- 12013-04-05 06:26:00
รายการทริกเกอร์ (กระตุ้น)
คุณสามารถแสดงรายการทริกเกอร์ทั้งหมดจากตารางsqlite_master ดังต่อไปนี้:
SQLite> SELECT ชื่อจาก sqlite_master ที่พิมพ์ = 'ทริกเกอร์';
คำสั่งดังกล่าวข้างต้นแสดงรายการข้อมูล SQLite เพียงหนึ่งรายการดังต่อไปนี้:
ชื่อ ---------- audit_log
หากคุณต้องการที่จะแสดงรายการทริกเกอร์บนโต๊ะที่เฉพาะเจาะจงใช้คำว่าและประโยคที่จะเข้าร่วมตารางมีดังนี้
SQLite> SELECT ชื่อจาก sqlite_master ที่พิมพ์ = 'ทริกเกอร์' และ tbl_name = ' บริษัท ';
คำสั่งดังกล่าวข้างต้นแสดงรายการข้อมูล SQLite เพียงหนึ่งรายการดังต่อไปนี้:
ชื่อ ---------- audit_log
เอาทริกเกอร์ (กระตุ้น)
ต่อไปนี้เป็นคำสั่ง DROP สามารถนำมาใช้เพื่อเอาทริกเกอร์ที่มีอยู่:
SQLite> DROP TRIGGER trigger_name;