Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/11/2015, 15:05
valalmeida
 
Fecha de Ingreso: noviembre-2015
Ubicación: chile
Mensajes: 5
Antigüedad: 8 años, 6 meses
Puntos: 0
Pregunta problema con if en procedimeinto almacenado

Hola a todos , bueno mi consulta es para saber que estoy haciendo mal.
cree un procedimiento llamado insertarUsuario donde no debería permitir insertar un usuario si tiene el código de socio repetido al crearlo.
MIS TABLAS SON:
| usuario | CREATE TABLE `usuario` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`NICK` varchar(20) NOT NULL,
`PASSWORD` varchar(8) NOT NULL,
`IDSOC` int(11) NOT NULL,
`ADMIN` char(2) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `IDSOC` (`IDSOC`),
CONSTRAINT `usuario_ibfk_1` FOREIGN KEY (`IDSOC`) REFERENCES `socio` (`IDSOC`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1 |


| socio | CREATE TABLE `socio` (
`IDSOC` int(11) NOT NULL AUTO_INCREMENT,
`SOC_IDSOC` int(11) DEFAULT NULL,
`SOC_IDSOC2` int(11) DEFAULT NULL,
`DIRECCION` text,
`TELEFONO` int(11) DEFAULT NULL,
`NOMBRE` varchar(20) NOT NULL,
PRIMARY KEY (`IDSOC`),
KEY `FK_AVALA` (`SOC_IDSOC2`),
KEY `FK_AVALA2` (`SOC_IDSOC`),
CONSTRAINT `FK_AVALA` FOREIGN KEY (`SOC_IDSOC2`) REFERENCES `socio` (`IDSOC`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `FK_AVALA2` FOREIGN KEY (`SOC_IDSOC`) REFERENCES `socio` (`IDSOC`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1 |

MI PROCEDIMEINTO:
mysql> create procedure insertarUsuario(nick1 varchar(20),password1 varchar(8),idSoc1 int(11))
-> begin
-> declare total int;
-> set total = (select count(IDSOC) from usuario where NICK = nick1);
-> if total<2 then
-> insert into usuario (NICK,PASSWORD,IDSOC) values(nick1,password1,idSoc1);
-> end if;
-> commit;
-> end;
-> //
Query OK, 0 rows affected (0.00 sec)

no logro saber porque inserta el registro a pesar de haber un usuario con mas de un idSoc repetido.
Ayuda...