بلدي الخلية بعد الزناد INSERT لا يعمل؟ لماذا ا؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

ولقد خلق الزناد مشابهة لما يلي:

delimiter //
CREATE TRIGGER update_total_seconds_on_phone AFTER INSERT
ON cdr 
FOR EACH ROW 
BEGIN
IF NEW.billsec > 0 AND NEW.userfield <> NULL THEN
UPDATE foo
SET total_seconds = total_seconds + NEW.billsec
WHERE phone_id = NEW.userfield;
END IF;

END;//

ويبدو أن يذهب من خلال ما يرام. ومع ذلك فإنه لا يبدو أن الاحتجاج عندما كنت في حاجة إليها ل. وإليك مثال:

mysql> select total_seconds from foo where phone_id = 1;
+---------------+
| total_seconds |
+---------------+
|             0 | 
+---------------+
1 row in set (0.00 sec)

والخلية> تضاف الى مجلس الإنماء والإعمار (billsec، userfield) VALUES (60، 1)؛ الاستعلام موافق، 1 صف المتضررين، 12 التحذيرات (0.00 ثانية)

mysql> select total_seconds from foo where phone_id = 1;
+---------------+
| total_seconds |
+---------------+
|             0 | 
+---------------+

وتحرير: التحذيرات في هذه الحالة بالذات لا تؤثر على الزناد. انها في معظمها الأعمدة الإضافية التي لم يكن لديك القيم الافتراضية في الجدول مجلس الإنماء والإعمار التي تسبب التحذيرات. من أجل البساطة، وظللت بياني INSERT جيزة.

هل كانت مفيدة؟

المحلول

وهناك 12 التحذيرات التي تم إنشاؤها. ما هي؟

وETA: أوه، الانتظار ... كنت بحاجة إلى استخدام is not null بدلا من <> null. فإن أي مقارنة مع null يعود دائما null.

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