顯然的ColdFusion不喜歡在一個查詢中的多個SQL語句...所以曾經是這樣的:ColdFusion:查詢中的多個SQL語句?
SET @sender_user_id = 3, @recipient_user_id = 5;
INSERT INTO messages (message_type, sender_id, message_title, message_content)
VALUES(3, @sender_user_id, 'One more thing...', 'I am testing this message');
SET @saved_message_id = LAST_INSERT_ID();
INSERT INTO message_recipient (message_id, user_id)
VALUES(@saved_message_id, @recipient_user_id);
INSERT INTO message_status (message_id, user_id, is_read, read_datetime, is_deleted, deleted_datetime)
VALUES (@saved_message_id, @recipient_user_id, 0, NULL, 0, NULL);
獲取反倒成了這樣:
<cftransaction>
<cfquery name="insertMessage" dataSource="mySource">
SET @sender_user_id = 3, @recipient_user_id = 5;
</cfquery>
<cfquery name="insertMessage2" dataSource="mySource">
INSERT INTO messages (message_type, sender_id, message_title, message_content)
VALUES(3, @sender_user_id, '#params.message_title#', '#params.message_content#');
</cfquery>
<cfquery name="insertMessage3" dataSource="mySource">
SET @saved_message_id = LAST_INSERT_ID();
</cfquery>
<cfquery name="insertMessage4" dataSource="mySource">
INSERT INTO message_recipient (message_id, user_id)
VALUES(@saved_message_id, @recipient_user_id);
</cfquery>
<cfquery name="insertMessage5" dataSource="mySource">
INSERT INTO message_status (message_id, user_id, is_read, read_datetime, is_deleted, deleted_datetime)
VALUES (@saved_message_id, @recipient_user_id, 0, NULL, 0, NULL);
</cfquery>
</cftransaction>
這工作...但我我想知道是否有一些我不知道的ColdFusion。否則,這是有效的。
你是什麼意思「變成」?對於例子中所示的過程,它確實應該在事務中,因爲您正在處理多個表/記錄,實質上這是一個原子記錄。我假設你有這種分佈在多個表上,以允許消息有多個用戶收到每個消息的個人狀態? – colinross 2011-06-09 21:18:35
是的,你是對的......但即使在聲明MySQL變量時,這些變量也必須在自己的查詢中才能正常工作。我只是不確定在語法上是否有某種類型,至少將變量組合到查詢中。 – dcolumbus 2011-06-09 21:21:00