我有幾個插入語句,如果它們是真的,我只想執行。只有在條件爲真時才插入MySQL
這是我的例子:
START TRANSACTION;
INSERT INTO fields (field_name, control_type_id, needs_approval)
VALUES
('Array Photos', 3, 0);
INSERT INTO field_to_job_type (field_id, job_type_id, sequence_number, parent_id)
VALUES
(last_insert_id(), (SELECT job_type_id FROM job_types WHERE job_type_name = 'Cash'), 1, (SELECT field_id FROM fields where field_name = 'Photo Pack'));
COMMIT;
現在,我只是真的想如果只有1這個查詢結果運行第二個查詢:
SELECT job_type_id FROM job_types WHERE job_type_name = 'Cash'
。
如果該查詢返回2個結果,我想放棄該事務。
這可能嗎?我試過的東西:
START TRANSACTION;
INSERT ...;
INSERT ...;
IF(SELECT count(job_type_name) FROM job_types WHERE job_type_name = 'Cash') = 1, 'COMMIT', 'ROLLBACK');
其中,顯然沒有工作。
通過放棄交易,你的意思是回滾第一個插入? – RiggsFolly
@FlorianHeer我不認爲這是一個愚蠢的目標 – Drew
選擇計數(*)到一個變種,並做一個「if」塊 – Drew