Al parecer no le gusta ColdFusion varias sentencias SQL dentro de una única consulta ... así que lo que antes era la siguiente:ColdFusion: ¿Múltiples declaraciones SQL en una consulta?
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);
Get ha convertido en esto:
<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>
esto funciona ... pero Me pregunto si hay algo de ColdFusion que no sepa. De lo contrario, esto funciona.
¿Qué quiere decir con "se convierte en"? Para un proceso como el que se muestra en el ejemplo, realmente debería estar en una transacción, ya que se trata de varias tablas/registros que, en esencia, son un registro atómico. Supongo que tiene esto repartido en varias tablas para permitir que los mensajes tengan múltiples usuarios que reciban un mensaje con un estado individual en cada uno. – colinross
Sí, está en lo correcto ... pero incluso al declarar variables de MySQL, esas variables deben estar en su propia consulta para que funcione. Simplemente no estaba seguro de si había algún tipo de sintaxis para combinar al menos las variables en las consultas. – dcolumbus