如何在sql中使用自动增量在id列中添加前缀?

时间:2018-09-25 11:48:03

标签: mysql sql database

我有多个用户,例如admin和vendor等。现在,我想在插入数据的同时在id字段值中添加前缀,例如use是admin,则id字段的值是“ A_1”,或者用户是vendor的值应该是V_1”,而ID字段会自动增加。对此有任何想法的人请发表评论。谢谢。

2 个答案:

答案 0 :(得分:0)

要自动增加ID,您可以在sql上阅读有关auto increment的信息:

一些用于自动增加用作主键的ID的身份示例:

defmodule Async do
   def example do
       process_id = Task.start_link(fn ->
          #some code you want its result later
       end)
       #do some stuff
       :ok
    end
end

在这种情况下,您不必指定在任何CREATE TABLE Test_AutoIncrement( ID int AUTO_INCREMENT, Name varchar(50) NULL, Something varchar(100) NOT NULL, PRIMARY KEY(ID)); 语句期间提交的ID,SQL将会对此进行管理。

例如,我们有此表的一些记录,例如:

INSERT

现在,我们在ID | Name | Something | 1 "Simo" "Foo" 2 "Fred" "Bar" 表上模拟一个Insert语句:

Test_AutoIncrement

现在我们的表如下:

INSERT INTO Test_AutoIncrement
VALUES(
        NULL,
        "FooBar()"
      );

备注:

在上述情况下,我们从ID | Name | Something | 1 "Simo" "Foo" 2 "Fred" "Bar" 3 NULL "FooBar()" 开始,它将在每个新记录上将其递增1。

如果要从零开始计数,则可以在插入中指定ID=1,但是ID=0必须是MySQL的NO_AUTO_VALUE_ON_ZERO

答案 1 :(得分:0)

您可以使用序列和触发器来完成 这是一个有效的例子

create table tbl_usertypes(
 usertypes_id varchar2(50),
 name varchar2(50),
 usertype varchar2(50),
 CONSTRAINT pk_usertypes_id PRIMARY KEY(usertypes_id)
);

desc tbl_usertypes;

CREATE SEQUENCE sq_usertypes_id START WITH 1;

create or replace trigger add_random_id
BEFORE INSERT ON tbl_usertypes
FOR EACH ROW
BEGIN
  IF :NEW.usertype = 'admin' THEN
        SELECT 'A_' || sq_usertypes_id.NEXTVAL INTO :NEW.usertypes_id FROM dual;
    ELSE 
        SELECT 'B_' || sq_usertypes_id.NEXTVAL INTO :NEW.usertypes_id FROM dual;
    END IF;
END;

INSERT INTO tbl_usertypes values(null,'hoax', 'admin');
INSERT INTO tbl_usertypes values(null,'hoax', 'user');
select * from tbl_usertypes;

和结果 enter image description here