2011-03-29 9 views
10

Estoy bastante seguro de MySQL no tiene el [valor de la columna] INSERT INTO tabla de salida que hace MSSQL - http://msdn.microsoft.com/en-us/library/ms177564.aspx (o http://blogs.msdn.com/b/sqltips/archive/2005/06/13/output-clause.aspx)MySQL INSERT con una salida como MSSQL

¿Cuál es una manera fácil de replicar esto? (Estoy moviendo una aplicación MSSQL a MySQL. La 'OUTPUT' es un identificador único y una int actualmente, entonces ¿podría simplemente SELECCIONAR MAX (int) y agregar uno, y generar un UID antes de insertar?)

Gracias

+0

¿Hay un AUTO_INCREMENT en la columna? Si es así, use 'LAST_INSERT_ID'. Si no, SELECT MAX tendrá que hacer, de hecho ... – Konerak

+0

Tenga en cuenta que MS SQL también tiene una característica como 'LAST_INSERT_ID()': SET '@logSqlId = SCOPE_IDENTITY();' Puede usar logSqlId como parámetro de salida o 'SELECCIONAR' de él. También para lectores futuros, considere Postgres si se mueve de uno de los grandes sistemas comerciales. Sus capacidades están mucho más cerca de los sistemas de bases de datos de alta gama y, en algunos casos, los supera. –

Respuesta

10

Si este valor es un campo de incremento automático, puede ejecutar SELECT LAST_INSERT_ID(); después de ejecutar la inserción, y obtendrá el último valor insertado en este campo. Ver: http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id

+0

Brillante, no he usado mucho MySQL así que no estaba al tanto de esa característica, debería hacer el truco y puedo generar un GUID/identificador único con bastante facilidad – AaronM

+0

Thanx @Galz Esto es increíble ... – Learner

+2

Lamentablemente esto no ayuda en absoluto si se realizan inserciones por lotes, especialmente si es necesario hacer una mayor coincidencia después del hecho y necesita más que la identificación, lo que da como resultado una selección adicional. –

Cuestiones relacionadas