Ver Mensaje Individual
  #3 (permalink)  
Antiguo 21/11/2012, 11:09
Avatar de fahs82
fahs82
 
Fecha de Ingreso: abril-2012
Ubicación: guadalajara
Mensajes: 139
Antigüedad: 12 años, 1 mes
Puntos: 12
Respuesta: problema al querer crear trigger desde prepared statement

gracias ya pude resolver mi problema ,entre las veces que copiaba y adaptaba el trigger de mi script lo deforme y hubo algunos espacios que habia omitido , dejo el codigo correcto y las siguientes observaciones para quien se encuentre en el mismo problema que yo

1- se debe de proporcionar las multiqueries en la cadena de conexion del driver de jdbc la cual se especifica despues de la base de datos , en mi caso iploc es donde coloco la ip de mi servidor y db es donde coloco el nombre de la base de datos

Código:
public String url ="jdbc:mysql://" + iploc +"/" + db + "?allowMultiQueries=true";
2- se elimina el delimiter de el script de sentencia , por defecto el driver parsea el comando y crea el trigger

3-se deben de reconocer los espacios exactos entre cada linea y palabra pues la omision o espacio en blanco sobrante provocan un error en la sintaxis

en mi caso se debio a que escribi lineas de mas , omiti comas y al hacer copypaste en algunos casos no verifique que la secuencia fuera la adecuada , agradesco la ayuda del compañero y espero sea de ayuda los detalles que encontre para los que al igual que yo se encontraban despistados sobre la creacion de triggers a travez del jdbc en mysql , al calce posteo el codigo correcto ya probado

Código:
 String TriggerBarcode = "CREATE TRIGGER ACTCODIGO "
+ "BEFORE INSERT ON BC_ARTICULOS "
+ "FOR EACH ROW BEGIN "
+ "DECLARE digito INT DEFAULT 0; "
+ "DECLARE resultado INT DEFAULT 0; "
+ "DECLARE IDN INT DEFAULT 0; "
+ "DECLARE NUMPREV VARCHAR(30) DEFAULT 0; "
+ "IF NEW.BARCODE IS NULL THEN "
+ "SET IDN = (SELECT MAX(ID) FROM BC_ARTICULOS); "
+ "IF IDN IS NULL THEN "
+ "SET IDN = 1; "
+ "ELSE "
+ "SET IDN = (SELECT MAX(ID) FROM BC_ARTICULOS)+1; "            
+ "END IF; "
+ "SET NUMPREV = 750000000000 + IDN; "
+ "SET DIGITO = 10-(((substr(NUMPREV,2,1)+substr(NUMPREV,4,1)+substr(NUMPREV,6,1)+substr(NUMPREV,8,1)+substr(NUMPREV,10,1)+substr(NUMPREV,12,1))*3)+((substr(NUMPREV,1,1)+substr(NUMPREV,3,1)+substr(NUMPREV,5,1)+substr(NUMPREV,7,1)+substr(NUMPREV,9,1)+substr(NUMPREV,11,1))))mod 10; "
+ "IF DIGITO < 10 THEN SET NEW.BARCODE = CONCAT(NUMPREV,DIGITO); "
+ "ELSE  SET NEW.BARCODE = CONCAT(NUMPREV,'0'); "
+ "END IF; "
+ "END IF; "
+ "END";