如何在主键中添加前缀?

4
我有一个名为“学生表”的表格,其中包含“入学ID”,我想在注册时给该“入学ID”添加前缀。
学生表:
S_AdminID  S_Name S_Gender
1          eeee   M
2          gggg   F

14年被加入到入场ID中,我想要这样。
S_AdminID      S_Name   S_Gender
14AD1          eeee     M
14AD2          gggg     F

提前感谢。

这个ID目前是自动生成的吗? - shree.pat18
你想要仅可视化这个“前缀”,还是想要将它存储在表中? - Barranka
1个回答

2
UPDATE table set S_AdminID=CONCAT("14AD",S_AdminID)

但是如果你的表属性是intautoincrement,这可能会产生影响。

演示

如果你想要自动实现,可以使用触发器

例如:

CREATE TRIGGER test BEFORE INSERT ON table_name
FOR EACH ROW SET @S_AdminID = CONCAT('14AD' ,@S_AdminID);

如果您想使用前缀与主键,自增长。那么,您需要对表模式进行一些更改,如下所示:
CREATE TABLE myItems (
    id INT NOT NULL AUTO_INCREMENT,
    prefix CHAR(30) NOT NULL,
    PRIMARY KEY (id, prefix),

我不想更新,在注册过程中应该添加前缀。 - GuruKumar
那么你应该展示在注册时有效的INSERT查询。 - Hanky Panky
插入到Std_table(S_Name,S_Gender)中的值为('gggg','F')。 - GuruKumar
@GuruKumar,你可以使用服务器端脚本语言PHP或使用触发器来完成这个任务。 - Manwal
当我执行这个查询时,s_admissionid是一个主键和自动增量。输出应该是: 14AD005 gggg F 14AD006 tyht M就像这样,我想要。 - GuruKumar
创建表table1_seq (   id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ); CREATE TABLE table1 (   id VARCHAR(7) NOT NULL PRIMARY KEY DEFAULT '0', name VARCHAR(30) );现在是触发器DELIMITER $$ CREATE TRIGGER tg_table1_insert BEFORE INSERT ON table1 FOR EACH ROW BEGIN   INSERT INTO table1_seq VALUES (NULL);   SET NEW.id = CONCAT('LHPL', LPAD(LAST_INSERT_ID(), 3, '0')); END$$ DELIMITER ;然后你只需要向table1插入行INSERT INTO Table1 (name) VALUES ('Jhon'), ('Mark');你将拥有

|     ID | NAME |

| LHPL001 | Jhon | | LHPL002 | Mark |
- GuruKumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接