這是我用於基於Perl的Web應用程序的一大塊SQL。我有許多請求,每個請求都有一些加入,並且每個都有一個狀態。這段代碼用於更新每個accession_analysis的表格,該請求在請求中共享每個接入點的所有這些字段。我可以用一個查詢插入/更新到兩個表嗎?
UPDATE accession_analysis
SET analysis_id = ? ,
reference_id = ? ,
status = ? ,
extra_parameters = ?
WHERE analysis_id = ?
AND reference_id = ?
AND status = ?
AND extra_parameters = ?
and accession_id is (
SELECT accesion_id
FROM accessions
where request_id = ?
)
我已經改變了表,以便有一個爲accession_analysis一個狀態表,所以當我更新,我更新兩個accession_analysis和accession_analysis_status,其中有狀態,STATUS_TEXT和accession_analysis的ID,這是一個不爲空auto_increment變量。
我對如何修改此代碼以實現此目標沒有強烈的想法。我的第一次通過抓住所有的種子並通過它們循環,然後過濾所有的田地,然後更新。我不喜歡那樣,因爲我和很短的SQL命令有很多聯繫,我認爲這些命令很糟糕,但我不禁想到真正做到這一點的唯一方法是回到Perl中的循環中,它持有兩個簡單的SQL語句。
有沒有辦法在SQL中做到這一點,與我的相對SQL缺乏經驗,我只是沒有看到?
雖然我不同意的願望;-)一個觸發器也可能是一個好主意,如果系統仍然可以維護之後... –
很好的解決方案的描述,但學習做存儲過程觸發器似乎是一個長期的解決方案。我在Perl中通過循環實現了這一點,並將「在MySQL中學習存儲過程和觸發器」放到我的待辦事項列表中。 –