
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...