قبل أو بعد الزناد من أجل الحفاظ على سجل التدقيق

StackOverflow https://stackoverflow.com/questions/406464

  •  03-07-2019
  •  | 
  •  

سؤال

لقد كنت أقرأ MySql 5.0 تيار التعليق على إنشاء الزناد الصفحة و أود أن أطلب من المجتمع إذا توصيات جيدة & ما إذا كانت لا تزال سارية إلى 5.1.ما لاحظت اللعب مع مشغلات اليوم هو أنه من المستحيل تحديث حقل في الجدول القديم باستخدام بعد التحديث.

  1. كن حذرا قبل أن يطلق.القيود قد تحدث خصوصا إذا كنت تستخدم ك InnoDB, حيث إدراج سوف تفشل ، ولكن الإجراءات من قبل الزناد سوف تنجح.
  2. استخدام قبل أن يتسبب في المقام الأول عن القيود أو القواعد لا معاملات التغيير والتبديل الجديدة.* الأعمدة يجب أن يكون على ما يرام.
  3. العصا مع بعد المشغلات معظم عمليات أخرى ، مثل إدراج في تاريخ الجدول أو تحديث denormalization.
هل كانت مفيدة؟

المحلول

نعم.AFAIK, MySQL 5.1 لم يتم إجراء أية تغييرات إلى دلالات كيف يؤدي العمل.الخلية يحاول دعم ANSI/ISO SQL مواصفات الزناد دلالات.

يمكنك أن تتخيل أن هناك سلسلة من العمليات التي تدير الصف كتابتها إلى قاعدة البيانات:

  1. تشغيل من قبل المشغلات
  2. تقييم القيود فرض NOT NULL, تطبيق DEFAULT القيم
  3. كتابة الصف في قاعدة البيانات
  4. تحديث الفهارس
  5. بعد تشغيل مشغلات

مرة واحدة كنت قد وصلت بعد الزناد فوات الاوان لتغيير القيم في الصف.في بعض قواعد البيانات ، يمكنك تعيين NEW.somecolumn = 1234 ولكن هذا التغيير بصمت التخلص منها بعد الزناد التشطيبات.في قواعد بيانات أخرى ، فإنه يساعدك على فهم خطأ الخاص بك عن طريق إعطائك خطأ إما عند تعريف الزناد أو عند تشغيل الزناد.

بعد المشغلات تستخدم أفضل لمزيد من الإجراءات التي يجب اتخاذها نتيجة إدراج/تحديث الصف ، مثل تسجيل التدقيق التي ذكرتها.لشيء واحد, MySQL فقط تصاريح واحد الزناد لكل عمل في الجدول, حتى إذا كنت تستخدم أيضا من قبل يؤدي إلى تغيير القيم وإنفاذ قواعد العمل ، الآن يمكنك على الأقل الحفاظ على إجراءات إضافية منفصلة على الزناد.هذا يجعل من السهل لتحديث واحدة أو أخرى.

على اعتبار آخر هو أن عليك أن تفعل ربما إضافية الإجراءات فقط بعد كنت تعرف الصف قد تم حفظها بنجاح.E. g.لن يكون الحق في تسجيل تغيير في قبل الزناد ، ومن ثم يكون التغيير إحباط بسبب قيد NOT NULL.

من أجل حذف الإجراءات حيث تحتاج إلى إزالة تعتمد الصفوف في الجداول الأخرى, قد لا يزال لديك للقيام بذلك في قبل الزناد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top