mysql 能自动生成主键吗

来源:百度知道 编辑:UC知道 时间:2024/05/30 14:41:07
我的主键字段是 char的。不是int!!不能用auto_increament!!
有没有一种函数可以在列中自动生成一个唯一值
比如列中有12和13,可以自动生成15或其他的
stored procedure??
能说具体点吗

要实现估计只能用stored procedure来做insert

==================================
DROP TABLE IF EXISTS my_test;

CREATE TABLE my_test (
pk VARCHAR(255) PRIMARY KEY,
val VARCHAR(255) NOT NULL
);

INSERT INTO my_test VALUES ('a001','val_1');

DROP PROCEDURE IF EXISTS MY_INSERT;

DELIMITER //
CREATE PROCEDURE MY_INSERT(IN val_in varchar(255))
BEGIN
DECLARE new_pk, count_index_str VARCHAR(255);
DECLARE count_index INT;
SET new_pk = (SELECT pk FROM my_test ORDER BY pk DESC LIMIT 1);
SET count_index = CAST(RIGHT(new_pk,3) AS UNSIGNED);
SET count_index_str = CAST((count_index+1) AS CHAR(3));

WHILE LENGTH(count_index_str) < 3 DO
SET count_index_str = CONCAT('0',count_index_str);
END WHILE;

SET new_pk = CONCAT(LEFT(new_pk,1), count_index_str);
INSERT INTO my_test VALUES(new_pk, val_in);
END
//
DELIMITER ;
<