自动增加第二列

时间:2013-03-13 14:27:22

标签: mysql

我有一个包含2列的表格。 ID列自动递增。我正在尝试使用与id列相同的ID自动递增用户列,但使用“user”前缀(例如:user100,其中ID也是100)基本上就像在stackoverflow上执行的操作一样

CREATE TABLE test_table (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     user CHAR(30) NOT NULL,
     PRIMARY KEY (id)
) ENGINE=MyISAM;

有没有办法在1个查询中执行此操作?而不是插入数据库,然后查询获取ID,并将ID插入用户列?

3 个答案:

答案 0 :(得分:2)

使用BEFORE触发器:

DELIMITER $$
CREATE TRIGGER test_table_trigger
BEFORE INSERT ON test_table
FOR EACH ROW BEGIN
    SET NEW.`user` = CONCAT(NEW.`user`, NEW.id);
END $$
DELIMITER ;

文档:MySQL triggers

答案 1 :(得分:1)

你可以做一个触发器

触发前:

mysql> truncate table test_table;
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter $$
mysql> CREATE TRIGGER test_table_trigger
    -> BEFORE insert ON test_table
    -> FOR EACH ROW
    -> BEGIN
    ->    SET new.user = CONCAT('user', (SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='test_table'));
    -> END $$
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;
mysql> INSERT INTO test_table values ();
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> INSERT INTO test_table values ();
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> INSERT INTO test_table values ();
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> select * FROM test_table;
+----+-------+
| id | user  |
+----+-------+
|  1 | user1 |
|  2 | user2 |
|  3 | user3 |
+----+-------+
3 rows in set (0.00 sec)

然后,上面应该在指定id列后使用自动增量并将其附加到字符串user。自动增量ID从Information_Schema中提取,就好像这是在事务或许多查询中,可能设置错误。

答案 2 :(得分:0)

也许你可以试试这个,拿起最后插入的id并用转换后的值连接字符串:

INSERT INTO test_table (user) VALUES ('user')

UPDATE test_table
SET user = user + CAST(LAST_INSERT_ID() AS VARCHAR)
WHERE id = LAST_INSERT_ID()