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/