2016-01-23 85 views
1

我想插入一些記錄到表中,並更新其在另一個表中的自動incriment id;如何解決查詢錯誤(1442)MySql

我有一個觸發

delimiter # 

create trigger test AFTER INSERT ON samples_track for each row begin 
update sample_details set sampletrack_id = new.sampletrack_id where sample_details.sample_id = new.sample_id; end# 

delimiter ; 

而且我運行一個查詢

INSERT INTO samples_track(sample_name,customer_id,contact_name,added_by,added_date,status,sample_id) 
SELECT sample_name, 
     customer_id, 
     clinician_id, 
     999, 
     '2016-01-23', 
     1, 
     sample_id 
FROM sample_details 
WHERE sampletrack_id IS NULL; 

結果如下

錯誤查詢(1442):不能更新表'sample_details'存儲在 函數/觸發器中,因爲它已被調用的語句使用 這個存儲的函數/觸發器。

回答

0

嗯,這個錯誤的原因是當你插入一條記錄時mysql會鎖定表。你不能插入/更新/刪除你插入的同一張表的行。因爲那麼這個觸發器會一次又一次地被調用..最終會在遞歸中結束。

要解決您的問題,請查看this thread。另外,他們建議在this forum之前使用插入前的觸發器......值得一試。

+0

這是mysql的一個缺點。我也遇到了同樣的問題 – Hari