I have a SQL Table for which I have written Triggers and Sequence which inserts 'I', 'U', 'D' in a column every time a record is inserted, deleted or updated. I also needed a sequence every time a new record is inserted in the table so I used a sequence for that.
CREATE TABLE "USER_DETAILS"
(
"ID" NUMBER(10,0) GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
"NAME" VARCHAR2(50 BYTE),
"CONTACT" NUMBER(10,0),
"STATUS" CHAR(1),
SEQUENCE VARCHAR2(50)
);
My output is like this, the sequence number starts with A00001 as per the sequence I wrote.
ID NAME CONTACT STATUS SEQUENCE
1 USER1 123456789 I A00001
2 USER2 123456789 I A00002
This is my trigger for "STATUS"
create or replace trigger insert_trigger before insert on USER_DETAILS for each row
begin
insert into USER_DETAILS
(ID,NAME,CONTACT,STATUS, SEQUENCE)
values
(:new.id,:new.name,:new.contact,'I',NULL);
end;
and this is my Sequence for the field "Sequence".
create or replace trigger insert_trigger before insert on USER_DETAILS for each row
begin
:new.SEQUENCE := 'A'||to_char(REF_SEQUENCE.nextval,'FM00000');
end;
But now the requirement is to start the sequence with the first alphabet of the field "Name". For example: If the Name is "User1" then the sequence should be "U00001" ,if the Name is "Random1" then the sequence should be "R00001"
I don't know how to achieve his functionality. Help!!!.