• Viernes 29 de Marzo de 2024, 14:35

Autor Tema:  Dudas  (Leído 1762 veces)

ScarFace

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Dudas
« en: Martes 15 de Febrero de 2011, 20:39 »
0
Hola, estoy migrando mi base de datos de SQL Express 2008 a MySQL 5.5.9

Y tengo varias dudas....
1.-¿Existe algo como el TRY CATCH de M$ SQL en MySQL?

2.-  Tengo un procedimiento almacenado para mi tabla de clientes, en el controlo si el RFC del cliente ya existe en caso de existir actualiza el registro. El caso es que estoy viendo como funciona eso de las transacciones y se me ocurrio poner el insert despues de la sentencia update para que este me marque el siguiente error 'Duplicate entry 'A1' for key 'RFC'' y no lo está marcando y correr de nuevo el procedimiento almacenado pues me actualiza el registro con los datos anteriores, supongo porque no le estoy haciendo el roll back pero lo primero que me resulta extraño es que no me marque que la entrada es duplicada.

Código: SQL
  1.    
  2. BEGIN
  3.  
  4.     START TRANSACTION;
  5.                                                      
  6.             SELECT SQL_CALC_FOUND_ROWS RFC FROM clientes
  7.             WHERE RFC = pRFC;  
  8.                            
  9.             IF  FOUND_ROWS() = 0 THEN      
  10.                 INSERT INTO clientes(RFC,RazonSocial,Calle,NInterior,NExterior,Asentamiento,CP,Municipio,Estado,Ciudad,Pais)
  11.                 VALUES (pRFC,pRazonSocial,pCalle,pNInterior,pNExterior,pAsentamiento,pCP,pMunicipio,pEstado,pCiudad,'Mexico');
  12.            
  13.             ELSE
  14.            
  15.            
  16.                 UPDATE clientes SET
  17.                  RazonSocial = pRazonSocial,
  18.                  Calle = pCalle ,
  19.                  NInterior = pNInterior ,
  20.                  NExterior = pNExterior,
  21.                  Asentamiento = pAsentamiento ,
  22.                  CP = pCP,
  23.                  Municipio = pMunicipio ,
  24.                  Estado = pEstado,
  25.                  Ciudad = pCiudad
  26.                  WHERE RFC = pRFC;
  27.        
  28.                 INSERT INTO clientes(RFC,RazonSocial,Calle,NInterior,NExterior,Asentamiento,CP,Municipio,Estado,Ciudad,Pais)
  29.                 VALUES (pRFC,pRazonSocial,pCalle,pNInterior,pNExterior,pAsentamiento,pCP,pMunicipio,pEstado,pCiudad,'Mexicon');
  30.                        
  31.             END IF;
  32.        
  33.     COMMIT;      
  34.  
  35. END
  36.  
  37.