Latest web development tutorials

سكليتي الزناد

سكليتي الزناد قاعدة البيانات هو دالة رد، وسوف تنفذ تلقائيا عند حدوث الاتصال / الحدث قاعدة البيانات المحددة. وفيما يلي النقاط الرئيسية على سكليتي الزناد: سكليتيالزناد (الزناد) هو دالة رد من قاعدة البيانات، وسوف تنفذ تلقائيا / دعوة عند حدوث حدث قاعدة البيانات المحددة.وفيما يلي النقاط الرئيسية حول المشغلات سكليتي (الزناد) من:

  • مشغلات سكليتي (الزناد) مشغلات يمكن تحديد وقت وقوع جداول قاعدة البيانات محددة DELETE، INSERT أو UPDATE أو تشغيلها عند حدوث واحد أو أكثر محددة أعمدة تحديث الجدول.

  • سكليتي يدعم فقط لكل مشغلات ROW (الزناد)، وليس لكل مشغلات بيان (الزناد). لذلك، حدد بشكل واضح لكل صف اختياري.

  • عندما يمكن الوصول إليها شرط وعلى الزناد (الزناد) عمل باستخدام نموذجاسم NEW.column وOLD.column اسمالمراجع المدرجة، حذف أو عناصر الصف المحدثة، ويرتبط اسم العمود مع المشغل من أعمدة الجدول الاسم.

  • عندما بند، إذا المقدمة، صحيح فقط للعندما يحدد شرط الصفوف لتنفيذ عبارات SQL. إذا تم تنفيذ أي بند عندما البيانات SQL لجميع الصفوف.

  • بعد تنفيذ العمل الزناد قبل أو بعد تحدد الكلمة عندما عمل الزناد، يتم إدراج القرار في خطوط المرتبطة بها، أو قبل حذف أو تعديل.

  • عندما يرتبط الجدول مع المشغل تلقائيا حذف حذف الزناد (الزناد).

  • لتعديل يجب أن يكون موجودا جدول في نفس قاعدة البيانات كما هو تعلق على الزناد الجداول أو وجهات نظر، ويجب أن يستخدم فقطTABLENAME، بدلا database.tablename.

  • وظيفة ريز SQL خاص () يمكن استخدامها لتحريك استثناء داخل البرنامج.

قواعد

إنشاءمشغل (الزناد) بناء الجملة الأساسي هو على النحو التالي:

CREATE TRIGGER trigger_name [قبل | بعد] EVENT_NAME 
على TABLE_NAME
BEGIN
 - منطق الزناد يذهب هنا ....
الغاية؛

هنا، يمكن ذكر EVENT_NAME في TABLE_NAMEجدولINSERT، DELETE وعملياتقاعدة البيانات UPDATE. يمكنك تحديد اختياريا لكل صف بعد اسم الجدول.

والمحددة في عملية التحديث في جدول واحد أو أكثر على الأعمدة إنشاء مشغل جملة (الزناد) التالية:

CREATE TRIGGER trigger_name [قبل | بعد] تحديث COLUMN_NAME 
على TABLE_NAME
BEGIN
 - منطق الزناد يذهب هنا ....
الغاية؛

أمثلة

دعونا نفترض وضعا حيث نريد لإدراجها في شركة جدول تم إنشاؤه حديثا (إذا كان موجودا بالفعل، حذف إعادة إنشائه) في كل من اختبار التدقيق وحفظ السجلات:

سكليتي> إنشاء شركة الجدول (
   معرف INT PRIMARY KEY NOT NULL،
   النص اسم NOT NULL،
   AGE INT NOT NULL،
   شار عنوان (50)،
   راتب ريال
)؛

من أجل الحفاظ على المحاكمات مراجعة الحسابات، وسوف نقوم بإنشاء جدول جديد يسمى المراجعة. كلما ديه جدول COMPANY إدخال قياسيا جديدا، سيتم إدراج رسالة السجل:

سكليتي> CREATE TABLE المراجعة (
    EMP_ID INT NOT NULL،
    ENTRY_DATE TEXT NOT NULL
)؛

هنا، الرقم هو المراجعة الرقم القياسي، EMP_ID معرف من الجدول COMPANY، يتم إنشاء التاريخ سوف تبقي الطابع الزمني عندما يتم تسجيل الشركة. لذلك، الآن دعونا إنشاء مشغل على الطاولة الشركة على النحو التالي:

سكليتي> إنشاء audit_log TRIGGER بعد INSERT 
على الشركة
BEGIN
   INSERT INTO المراجعة (EMP_ID، ENTRY_DATE) VALUES (new.ID، التاريخ والوقت ( 'الآن'))؛
الغاية؛

سوف نبدأ الآن لإدراج سجل في الجدول COMPANY، وهذا سوف يؤدي إلى إنشاء جدول المراجعة تسجيل التدقيق. لذا، دعونا إنشاء سجل في الجدول COMPANY، على النحو التالي:

سكليتي> INSERT INTO شركة (ID، الاسم والعمر والعنوان، راتب)
VALUES (1، 'بول'، 32، 'كاليفورنيا'، 20000.00)؛

هذا سيخلق رقما قياسيا في شركة الجدول التالي:

اسم معرف AGE عنوان راتب
---------- ---------- ---------- ---------- ----------
1 بولس 32 ولاية كاليفورنيا 20000.0

وفي الوقت نفسه، سوف نقوم بإنشاء سجل في الجدول المراجعة. هذا السجل هو نتيجة لالزناد، وهو الزناد نحن INSERT العمليات على الجداول التي تم إنشاؤها شركة (الزناد). وبالمثل، يمكن أن تخلق المشغلات على تحديث وحذف عمليات (الزناد).

EMP_ID ENTRY_DATE
---------- -------------------
12013-04-05 06:26:00

قوائم يؤدي (النوابض)

يمكنك سرد جميع المشغلات من الجدولsqlite_master، على النحو التالي:

سكليتي> اسم اختر من sqlite_master
أين نوع = "الزناد".

يسرد البيان سكليتي أعلاه إدخال واحد فقط، على النحو التالي:

اسم
----------
audit_log

إذا كنت ترغب في قائمة الزناد على جدول معين، استخدم جملة AND للانضمام كانت الجداول على النحو التالي:

سكليتي> اسم اختر من sqlite_master
أين نوع = "الزناد" وtbl_name = 'شركة'؛

يسرد البيان سكليتي أعلاه إدخال واحد فقط، على النحو التالي:

اسم
----------
audit_log

إزالة الزناد (النوابض)

وأمر DROP يمكن استخدام ما يلي لإزالة الزناد الحالية:

سكليتي> DROP TRIGGER trigger_name.