尽管从技术上讲,您可以在 MySQL 中使用单独的排序表和BEFORE
触发器来实现这一点
表模式:
CREATE TABLE articles_seq
(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
);
CREATE TABLE articles
(
`id` INT NOT NULL PRIMARY KEY DEFAULT 0,
`intro` VARCHAR(128),
`detail` VARCHAR(128),
`image` VARCHAR(128)
);
触发:
DELIMITER $$
CREATE TRIGGER tg_bi_articles
BEFORE INSERT ON articles
FOR EACH ROW
BEGIN
INSERT INTO articles_seq () VALUES ();
SET NEW.id = LAST_INSERT_ID(),
NEW.image = CONCAT(NEW.id, '.jpg');
END$$
DELIMITER ;
现在你可以像这样插入记录
INSERT INTO articles (`intro`, `detail`, `image`) VALUES
('Intro text 1', 'Details text 1', '.jpg'),
('Intro text 2', 'Details text 2', '.png');
结果:
| 身份证 | 介绍 | 详情 | 图片 |
|----|--------------|----|--------|
| 1 | 介绍文字 1 | 详细文字 1 | 1.jpg |
| 2 | 介绍文字 2 | 详细文字 2 | 2.jpg |
这是SQLFiddle演示
没有它你会过得更好。您可以改用视图
CREATE TABLE articles
(
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`intro` VARCHAR(128),
`detail` VARCHAR(128),
`ext` VARCHAR(32)
);
CREATE VIEW vw_articles AS
SELECT id, intro, detail, CONCAT(id, '.', ext) image
FROM articles;
这是SQLFiddle演示