我儘量讓一個觸發器來自動改變我的一些數據都被好MySQL的接受我的觸發器經過1個多行觸發器但在那之後,當我嘗試對數據更新顯示我的錯誤MYSQL子查詢返回更新
子查詢返回這個超過1個
首先我的數據庫很少巨大的,我在這裏複製我與限制選擇3
我的觸發是
DELIMITER $$
CREATE TRIGGER test3 AFTER UPDATE ON `coupons_data_result`
BEGIN
DECLARE mac INT default 0;
DECLARE durum INT default 0;
DECLARE ms1 INT default 0;
SET mac =(SELECT match_guess_type_id FROM coupon_rows WHERE match_code=NEW.cpnd_benzersiz);
SET durum =(select cpnd_status FROM matchs_result where cpnd_benzersiz=NEW.cpnd_benzersiz);
SET ms1 =(select cpnd_macsonucu1 FROM coupons_data_result where cpnd_benzersiz=NEW.cpnd_benzersiz);
IF (durum=3) THEN
IF(mac=1)THEN
IF(ms=1)THEN
UPDATE coupon_rows SET match_result='1' WHERE match_code=NEW.cpnd_benzersiz;
Else
UPDATE coupon_rows SET match_result='0' WHERE match_code=NEW.cpnd_benzersiz;
END IF;
END IF;
END IF;
END$$
DELIMITER ;
我限制選擇在我的數據庫是什麼3
+---------------------+-------------+
| match_guess_type_id | match_code |
+---------------------+-------------+
| 3 | 20170130398 |
| 0 | 20170130399 |
| 2 | 20170130401 |
+---------------------+-------------+
3 rows in set (0.00 sec)
+-------------+----------------+
| cpnd_status | cpnd_benzersiz |
+-------------+----------------+
| 3 | 20170129312 |
| 3 | 20170129313 |
| 3 | 20170129314 |
+-------------+----------------+
3 rows in set (0.00 sec)
+-----------------+----------------+
| cpnd_macsonucu1 | cpnd_benzersiz |
+-----------------+----------------+
| 0 | 20170129312 |
| 1 | 20170129313 |
| 1 | 20170129314 |
+-----------------+----------------+
3 rows in set (0.00 sec)
到底是什麼我嘗試更新列表
+--------------+-------------+
| match_result | match_code |
+--------------+-------------+
| 1 | 20170130398 |
| 3 | 20170130399 |
| 3 | 20170130401 |
+--------------+-------------+
3 rows in set (0.00 sec)
PS:所有MATCH_CODE和benzersiz在桌子上
這裏沒有什麼可以解釋的;三個子查詢中的一個返回多條記錄。立即解決的辦法是在每個子查詢的末尾標記「LIMIT 1」,但更好的長期修復將是修復查詢的邏輯,使得您真正想要的記錄得到返回。 –
我明白了,謝謝你現在修好了。在那裏我設置了mac,它正在返回更多的那一個。現在一切都看起來不錯,但沒有工作我的觸發器:/ – ZgrKARALAR