Oracle11g Oracle:Custome自动递增:C0001 C0002

Oracle11g Oracle:Custome自动递增:C0001 C0002,oracle11g,auto-increment,Oracle11g,Auto Increment,我正在尝试在Oracle sql中创建一个表。 我在创建表和我创建的序列方面没有问题。 现在我可以使用表单拨入姓名和电子邮件,表格将为我创建PK。 PK ID如下所示: 10001 | xxx | xxxx 10002 | xxx | xxxx 10003 | xxx | xxxx 我的问题是,如何使用函数或触发器自动更新我的ID,使其成为: QWER10001 | xxx | xxxx QWER10002 | xxx | xxxx QWER10003 | xxx | xxxx 我知道如何手

我正在尝试在Oracle sql中创建一个表。 我在创建表和我创建的序列方面没有问题。 现在我可以使用表单拨入姓名和电子邮件,表格将为我创建PK。 PK ID如下所示:

10001 | xxx | xxxx
10002 | xxx | xxxx
10003 | xxx | xxxx
我的问题是,如何使用函数或触发器自动更新我的ID,使其成为:

QWER10001 | xxx | xxxx
QWER10002 | xxx | xxxx
QWER10003 | xxx | xxxx
我知道如何手动更新它,但我希望它可以在我输入信息时将自定义文本放在我的ID前面

文本可以设置,当数字达到最大值时无需更改

我花了数小时寻找解决方案,但找不到正确的解决方案,请帮助


我还在网上做了更多的研究,现在我有了:

CREATE OR REPLACE TRIGGER "PROFILE_T1"
   BEFORE INSERT OR UPDATE
   ON "PROFILE"
   FOR EACH ROW
BEGIN
   :NEW.PROFILEID := 'WCCU' sequence.PROFILEIDUSE
END;
但这并不奏效。PROFILEID是主键,自动递增。PROFILEIDUSE是使其自动递增的序列。WCCU是我想在输入每个数据时添加到PK中的文本。

创建或替换触发器“PROFILE_T1”

以前

在“个人资料”中插入

每行

开始

:new.PROFILEID:=“WCCU”| | PROFILEIDUSE.nextval


结束

因为您已经创建了
序列
,所以只需在
INSERT
语句中使用它,在该语句中您应该明确指定列值。如果不想在
insert
语句中显式指定值,可以使用
before-indirect
触发器设置列的值

插入语句中

使用触发器


现在,您可以从
insert
语句中排除此主列。触发器将为您添加它。

当前如何插入主键?我的猜测是,INSERT之前有一个
触发器将其设置为sequence.nextval。在这种情况下,只需将文本连接到序列值即可<代码>'QWER'| sequence.nextval
。谢谢@Noel你是对的!!!我现在知道怎么做了。在插入每行的“PROFILE”之前创建或替换触发器“PROFILE_T1”,开始:new.PROFILEID:=“WCCU”| | PROFILEIDUSE.nextval;结束;
insert into your_table values('QWER'||your_sequence.nextval,....);
CREATE OR REPLACE TRIGGER your_trigger
   BEFORE INSERT ON your_table
   FOR EACH ROW
DECLARE
BEGIN
   :new.your_primary_key_column := 'QWER' || your_sequence.nextval;
END your_trigger;