generate id by procedure | mysql
作成時は、delimiter // で ; を変えておく必要があります。
autoincrementのIDを作成して返します。
mysql > delimiter // CREATE PROCEDURE check_user (IN s_id VARCHAR(255), OUT r_id INT(11)) BEGIN SELECT id INTO r_id FROM users WHERE authid=s_id; IF r_id is NULL THEN INSERT INTO users( authid ) values( s_id ); SELECT id INTO r_id FROM users WHERE authid=s_id; END IF; END // mysql > delimiter ;
mysql> call check_user('test2',@id); select @id; Query OK, 1 row affected (0.00 sec) +------+ | @id | +------+ | 1 | +------+ 1 row in set (0.00 sec) mysql> call check_user('test3',@id); select @id; -> // Query OK, 1 row affected (0.00 sec) +------+ | @id | +------+ | 2 | +------+ 1 row in set (0.00 sec) mysql> call check_user('test2',@id); select @id; Query OK, 1 row affected (0.00 sec) +------+ | @id | +------+ | 1 | +------+ 1 row in set (0.00 sec)
test2,test3を追加して、test2を見るとidは1が取得できるという例です。