Foro de elhacker.net

Programación => 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
  1. 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
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
, 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
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.

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

Código
  1. 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
  1. INSERT INTO tabla(empage) VALUES (10); SELECT LAST_INSERT_ID();