بلدي الخلية بعد الزناد INSERT لا يعمل؟ لماذا ا؟
سؤال
ولقد خلق الزناد مشابهة لما يلي:
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
.
لا تنتمي إلى StackOverflow