第一次写mysql存储过程,求教,附代码

DELIMITER //
CREATE PROCEDURE insert_pro(uid BIGINT(20),xm VARCHAR(255),bh INT(11))
BEGIN
start TRANSACTION;
SELECT 'id' from zy where id=uid and name=xm and number=bh;
IF 'id' is not null
THEN ROLLBACK;
ELSE
INSERT INTO zy VALUES(uid,xm,bh);
COMMIT;
END IF;
END //
如代码,我想做一个插入前检查的存储过程,即当三个参数都不一样时才能插进去,否则返回。麻烦看一下哪里出错了?if else函数么?

已解决!
DELIMITER $$
CREATE PROCEDURE insert_pro(IN xm VARCHAR(255),IN bh int(11),IN sd int(11))
BEGIN
DECLARE $existsFlag int DEFAULT 0;
SELECT id INTO $existsFlag from zy where name=xm and number=bh and sid=sd;
IF $existsFlag =0
THEN
INSERT INTO zy(name,number,sid) VALUES(xm,bh,sd);
END IF;
END $$

是否应该写一个触发器呢?但是如下
DELIMITER //
CREATE TRIGGER insert_t
BEFORE INSERT ON zy
BEGIN
SELECT id from zy where id=uid and name=uname and number=unumber
IF id is NULL
THEN INSERT into zy VALUES(uid,uname,unumber);
COMMIT;
ELSE ROLLBACK;
END IF
END //
这个参数怎么传递和取出呢?求教了

SELECT 'id' a from zy where id=uid and name=xm and number=bh;
IF a is not null
这么写

SELECT id a from zy where id=uid and name=xm and number=bh;
IF a is not null