clausula OUTPUT en sentencias INSERT de mySQL

Iniciado por peib0l, 30 Septiembre 2014, 17:00 PM

0 Miembros y 1 Visitante están viendo este tema.

peib0l

Buenas tardes amigos llevo un rato buscando una sentencia similar a esta de SQL Server, pero para mySQL, como en el titulo del post me refiero a la clausula OUTPUT.

Código (sql) [Seleccionar]
UPDATE tabla SET empage = 10 OUTPUT INSERTED.empid WHERE  (empage < 10)


Gracias ;)

peib0l


dimitrix





peib0l

Cita de: dimitrix en 30 Septiembre 2014, 20:23 PM
Conozco  la salida para ficheros pero esa nop...

Supongo que has visto esto:
http://stackoverflow.com/questions/5817414/output-clause-in-mysql

Si, la he visto, es mas el copy-paste lo hice de esa misma pagina, pero seria genial tener esa clausula en mySQL con lo vago que soy me ahorraría 3 lineas de código jeje

MinusFour

No creo que exista un equivalente, te vas a encontrar con work arounds así. A lo mucho puedes sacar la ultima ID de una inserción con LAST_INSERT_ID()...

dimitrix

Si lo haces por ahorrar líneas, haz caso a MinusFour...

Si lo haces para reducir las peticiones al servidor (por ejemplo, xq tienes amazon o google y te cobran por petición), podrías meter dos queries en una misma petición, simplemente separándola con ;

Por otro lado ¿Existe la cláusula LAST INSERT ID? No digo function, digo cláusula, sería genial.




peib0l

Cita de: dimitrix en  1 Octubre 2014, 00:19 AM
, podrías meter dos queries en una misma petición, simplemente separándola con ;

Podrias poner un ejemplo de como hacer en la misma query el insert y el select con LAST_INSERT_ID ?

MinusFour

#7
Cita de: dimitrix en  1 Octubre 2014, 00:19 AM
Si lo haces por ahorrar líneas, haz caso a MinusFour...

Si lo haces para reducir las peticiones al servidor (por ejemplo, xq tienes amazon o google y te cobran por petición), podrías meter dos queries en una misma petición, simplemente separándola con ;

Por otro lado ¿Existe la cláusula LAST INSERT ID? No digo function, digo cláusula, sería genial.

Que yo sepa no.

Cita de: peib0l en  1 Octubre 2014, 08:42 AM
Podrias poner un ejemplo de como hacer en la misma query el insert y el select con LAST_INSERT_ID ?

Código (mysql) [Seleccionar]

INSERT INTO tabla(empage) VALUES (10); SELECT empage FROM tabla WHERE empid = LAST_INSERT_ID();


Aunque esto no es la misma query... son dos queries separadas.

dimitrix





peib0l

Jeje gracias por la ayuda MinusFour, después de leer la documentación oficial y algo mas de información sobre esta función encontré que te devuelve el ultimo ID insertado siempre y cuando el campo sea auto-incremental y ademas esté en la misma conexión.


Código (mysql) [Seleccionar]

INSERT INTO tabla(empage) VALUES (10); SELECT LAST_INSERT_ID();