Latest web development tutorials

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;