Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] crear una variable por defecto en un trigger mysql

Estas en el tema de crear una variable por defecto en un trigger mysql en el foro de Mysql en Foros del Web. estoy intentando crear una variable pero me da error, esta variable es la concatenacion de dos campos. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original DECLARE @nombre ...
  #1 (permalink)  
Antiguo 27/12/2017, 07:47
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 8 años, 10 meses
Puntos: 10
crear una variable por defecto en un trigger mysql

estoy intentando crear una variable pero me da error, esta variable es la concatenacion de dos campos.
Código MySQL:
Ver original
  1. DECLARE @nombre VARCHAR(30)= CONCAT(OLD.nombre,' ',OLD.apellido);

El error me dice que es de sintaxis cerca de la declaracion.
despues esta variable la quiero utilizar con operadores logicos en un condicional

Última edición por azaz; 27/12/2017 a las 08:22
  #2 (permalink)  
Antiguo 27/12/2017, 08:27
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.404
Antigüedad: 13 años, 2 meses
Puntos: 774
Respuesta: crear una variable por defecto en un trigger mysql

y porque no lo haces asi:

Código MySQL:
Ver original
  1. DECLARE @nombre VARCHAR(30)
  2.  
  3. set @nombre= CONCAT(OLD.nombre,' ',OLD.apellido);
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 28/12/2017, 04:23
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 8 años, 10 meses
Puntos: 10
Respuesta: crear una variable por defecto en un trigger mysql

Cita:
Iniciado por Libras Ver Mensaje
y porque no lo haces asi:

Código MySQL:
Ver original
  1. DECLARE @nombre VARCHAR(30)
  2.  
  3. set @nombre= CONCAT(OLD.nombre,' ',OLD.apellido);
Hola, tambien probe de esa manera y me daba el mismo error la unica manera que me funciono es sin usar variables poniendo directamente el CONCAT en el condicional, pero ya quiero saber porque no funciona el error es de sintaxis .
  #4 (permalink)  
Antiguo 28/12/2017, 05:38
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.318
Antigüedad: 12 años
Puntos: 2653
Respuesta: crear una variable por defecto en un trigger mysql

En MySQL las variables locales de rutinas almacenadas (triggers, functions, stored procedures, events), NO USAN "@". Se definen directamente por su nombre:
Código SQL:
Ver original
  1. DECLARE nombre VARCHAR(30);
  2. SET nombre = CONCAT(OLD.nombre,' ',OLD.apellido);

Las variables que usan "@" son denominadas "variables de sesión" o "de conexión", y son persistentes en la misma conexión aunque el proceso que las usa termine si no termina la conexión, así como sus valores. No se las crea ni declara, sino que se INICIALIZAN, dado que su valor inicial es NULL, y toda operación con NULLL da por resultado NULL (no olvidar esto).
Tampoco tienen tipo de dato, por lo que adoptan el tipo del valor que se les asigna.
Es una de las diferencias con SQL Server que debe tenerse en cuenta.

Código SQL:
Ver original
  1. SET @nombre  = CONCAT(OLD.nombre,' ',OLD.apellido);
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 31/12/2017, 12:46
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 8 años, 10 meses
Puntos: 10
Respuesta: crear una variable por defecto en un trigger mysql

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En MySQL las variables locales de rutinas almacenadas (triggers, functions, stored procedures, events), NO USAN "@". Se definen directamente por su nombre:
Código SQL:
Ver original
  1. DECLARE nombre VARCHAR(30);
  2. SET nombre = CONCAT(OLD.nombre,' ',OLD.apellido);

Las variables que usan "@" son denominadas "variables de sesión" o "de conexión", y son persistentes en la misma conexión aunque el proceso que las usa termine si no termina la conexión, así como sus valores. No se las crea ni declara, sino que se INICIALIZAN, dado que su valor inicial es NULL, y toda operación con NULLL da por resultado NULL (no olvidar esto).
Tampoco tienen tipo de dato, por lo que adoptan el tipo del valor que se les asigna.
Es una de las diferencias con SQL Server que debe tenerse en cuenta.

Código SQL:
Ver original
  1. SET @nombre  = CONCAT(OLD.nombre,' ',OLD.apellido);
funciono perfecto

Etiquetas: campo, defecto, trigger, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:02.