我想在mysql中創建一個函數,如果表中已經存在id,將返回布爾值。我在網上找到的大多數解決方案都需要同時使用php和mysql的解決方案,但我想要做的是純粹以mysql的形式使用函數的解決方案。MySql函數不返回正確的結果
我simplifed MySQL表將如下:
CREATE TABLE IF NOT EXISTS table1 (
`user_id` VARCHAR(12) UNIQUE,
`name` VARCHAR(128),
PRIMARY KEY (`user_id`)
);
我第一次嘗試低於:
DELIMITER *
DROP FUNCTION IF EXISTS CheckExistId*
CREATE FUNCTION CheckExistId (user_id VARCHAR(12)) RETURNS BOOL
BEGIN
DECLARE isExist BOOL;
SET isExist = 0;
SELECT EXISTS(SELECT * FROM table1 WHERE `user_id`=user_id) INTO isExist ;
RETURN isExist;
END*
DELIMITER ;
我的第二次嘗試:
DELIMITER *
DROP FUNCTION IF EXISTS CheckExistId*
CREATE FUNCTION CheckExistId (user_id VARCHAR(12)) RETURNS BOOL
BEGIN
DECLARE isExist BOOL;
DECLARE countRow INT;
SELECT COUNT(`user_id`) INTO countRow FROM table1 WHERE `user_id`=user_id;
IF countRow = 0 THEN SET isExist = 1;
ELSE SET isExist = 0;
END IF;
RETURN isExist;
END*
DELIMITER ;
兩人都沒有給我我預期的結果。對於如何解決這個問題,有任何的建議嗎?
它可能是一個問題,在#1中使用星號作爲分隔符,但在你的選擇語句中有一個星號(星號)?不確定 - 只是猜測。 – FreudianSlip
這是一個學校作業嗎? –
@ kimsia nope。爲辦公室建立一個簡單的php/mysql系統。 – ImpStudent