Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => Bases de Datos => Mensaje iniciado por: peib0l en 30 Septiembre 2014, 17:00 PM

Título: clausula OUTPUT en sentencias INSERT de mySQL
Publicado por: peib0l en 30 Septiembre 2014, 17:00 PM
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 ;)
Título: Re: clausula OUTPUT en sentencias INSERT de mySQL
Publicado por: peib0l en 30 Septiembre 2014, 17:00 PM
---
Título: Re: clausula OUTPUT en sentencias INSERT de mySQL
Publicado por: 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
Título: Re: clausula OUTPUT en sentencias INSERT de mySQL
Publicado por: peib0l en 30 Septiembre 2014, 22:11 PM
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
Título: Re: clausula OUTPUT en sentencias INSERT de mySQL
Publicado por: MinusFour en 30 Septiembre 2014, 22:46 PM
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()...
Título: Re: clausula OUTPUT en sentencias INSERT de mySQL
Publicado por: 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.
Título: Re: clausula OUTPUT en sentencias INSERT de mySQL
Publicado por: peib0l en 1 Octubre 2014, 08:42 AM
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 ?
Título: Re: clausula OUTPUT en sentencias INSERT de mySQL
Publicado por: MinusFour en 1 Octubre 2014, 15:11 PM
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.
Título: Re: clausula OUTPUT en sentencias INSERT de mySQL
Publicado por: dimitrix en 1 Octubre 2014, 15:39 PM
Te me has adelantado :-)
Título: Re: clausula OUTPUT en sentencias INSERT de mySQL
Publicado por: peib0l en 2 Octubre 2014, 01:00 AM
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();