我正在尝试在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是PK并自动递增。 PROFILEIDUSE是使其自动递增的序列。 WCCU是我想在输入每个数据时添加到PK的文本。
答案 0 :(得分:0)
创建或替换触发器“PROFILE_T1”
在
插入“PROFILE”
每行
开始
:new.PROFILEID:='WCCU'|| PROFILEIDUSE.nextval;
端;
答案 1 :(得分:0)
由于您已经创建了sequence
,因此您只需在INSERT
语句中使用它,您应该明确指定列值。如果您不想在insert
语句中明确指定值,则可以使用before inert
触发器来设置列的值。
在INSERT语句中
insert into your_table values('QWER'||your_sequence.nextval,....);
使用TRIGGER
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;
现在,您可以从insert
语句中排除此主列。触发器将为您添加它。