mysql - 如何在 MySQL 中创建两个自增列?

标签 mysql

CREATE TRIGGER test1 AFTER INSERT ON `course_metadata_31`
FOR EACH ROW BEGIN
    UPDATE `course_metadata_31`
    SET `articleID` = `articleID` + 1
END;

我正在使用这种方法。当我将在 course_metadata_31 中插入新条目时,它也应该增加 articleID。因为我想将 articleID 作为另一个自动递增列。

我该怎么办?

最佳答案

不知道为什么你需要两列自动递增值,没有意义......但如果你坚持 -
你可以在 UDF 或 SP 中完成它,这样你就有多列自动递增一个值。

示例 #1:存储过程 (SP)


表格

CREATE TABLE tests (
    test_id INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,
    test_num INT(10) NULL,
    test_name VARCHAR(10) NOT NULL
);



存储过程

DELIMITER $$
CREATE PROCEDURE autoInc (name VARCHAR(10))
    BEGIN
        DECLARE getCount INT(10);

        SET getCount = (
            SELECT COUNT(test_num)
            FROM tests) + 1;

        INSERT INTO tests (test_num, test_name)
            VALUES (getCount, name);
    END$$
DELIMITER ;



调用 SP

CALL autoInc('one');
CALL autoInc('two');
CALL autoInc('three');



查表

SELECT * FROM tests;

+---------+----------+-----------+
| test_id | test_num | test_name |
+---------+----------+-----------+
|       1 |       1  | one       |
|       2 |       2  | two       |
|       3 |       3  | three     |
+---------+----------+-----------+




示例 #2:用户定义函数 (UDF)


表格

CREATE TABLE tests (
    test_id INT(10) NOT NULL PRIMARY KEY AUTO_INCREMENT,
    test_num INT(10) NULL,
    test_name VARCHAR(10) NOT NULL
);



用户自定义函数

DELIMITER $$
CREATE FUNCTION autoInc ()
    RETURNS INT(10)
    BEGIN
        DECLARE getCount INT(10);

        SET getCount = (
            SELECT COUNT(test_num)
            FROM tests) + 1;

        RETURN getCount;
    END$$
DELIMITER ;



使用 UDF 插入

INSERT INTO tests (test_num, test_name) VALUES (autoInc(), 'one');
INSERT INTO tests (test_num, test_name) VALUES (autoInc(), 'two');
INSERT INTO tests (test_num, test_name) VALUES (autoInc(), 'three');



查表

SELECT * FROM tests;

+---------+----------+-----------+
| test_id | test_num | test_name |
+---------+----------+-----------+
|       1 |       1  | one       |
|       2 |       2  | two       |
|       3 |       3  | three     |
+---------+----------+-----------+

这些已经过测试和验证。我个人会使用该功能,它更灵活。

关于mysql - 如何在 MySQL 中创建两个自增列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22824439/

相关文章:

mysql - 该 Polygon 对象会自行关闭。为什么此插入仍然失败并出现错误 3037 : Invalid GIS data?

php - 如何从搜索表单中获得最相关的命中

mysql - 在 mysql 中将 now() 截断为仅小时

MYSQL - MAX() 返回错误的日期

php - SQL 返回重复的行

mysql - 群组功能使用无效

MySQL/Percona : Date Range data integrity (via natural key)

mysql - 在 MySQL 中检查一组值是否等于另一组的值;不在乎顺序

mysql - 具有多个连接的多个 mysql 表

java - 如何转换富:calender date to mysql Date