欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql中報(bào)錯1442

黃文隆2年前11瀏覽0評論

如果你在使用mysql的過程中,遇到了報(bào)錯1442的情況,那么你需要對它進(jìn)行一定的了解和處理。

mysql>set session sql_mode='STRICT_ALL_TABLES';
ERROR 1442 (HY000): Can't update table 'table_name' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.

其中,mysql錯誤代碼1442表示不能在存儲過程或觸發(fā)器中更新表。常常是因?yàn)楫?dāng)存儲過程或觸發(fā)器調(diào)用時,表已經(jīng)被使用了。解決這個錯誤的方法也很簡單,可以通過以下的兩種方式中的一種來解決:

方法一:

禁用sql模式,使用以下命令:

SET GLOBAL sql_mode='NO_ENGINE_SUBSTITUTION';

該命令將對整個MySQL數(shù)據(jù)庫生效。

方法二:

通過修改MySQL存儲函數(shù)的定義來解決報(bào)錯1442的問題。例如,如果你在存儲過程或觸發(fā)器中定義了以下存儲過程:

CREATE FUNCTION sample_function(sample_param VARCHAR(100))
RETURNS INT
BEGIN
UPDATE table_name SET column_name = sample_param WHERE column_name = sample_param;
RETURN 1;
END;

你可以將其修改為:

CREATE FUNCTION sample_function(sample_param VARCHAR(100))
RETURNS INT
BEGIN
UPDATE table_name SET column_name = sample_param WHERE column_name = sample_param AND NOT (SELECT COUNT(*) FROM information_schema.triggers WHERE 
trigger_schema = DATABASE() AND trigger_name = 'trigger_name' AND event_object_table = 'table_name' AND action_timing = 'BEFORE'
AND event_manipulation = 'INSERT' AND action_orientation = 'ROW');
RETURN 1;
END;

這樣修改后,當(dāng)存儲過程或觸發(fā)器被調(diào)用時,就不會發(fā)生報(bào)錯1442的情況了。