Sql 如何在oracle数据库中创建带字符串的触发器列id自动递增?
我希望在列id中显示的结果:S-1、S-2、S-3Sql 如何在oracle数据库中创建带字符串的触发器列id自动递增?,sql,database,oracle,triggers,auto-increment,Sql,Database,Oracle,Triggers,Auto Increment,我希望在列id中显示的结果:S-1、S-2、S-3 CREATE OR REPLACE TRIGGER auto_id BEFORE INSERT ON login REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW BEGIN :NEW.id := :NEW.id || to_char('"S-"',to_char(seq_log.nextval)); END login; 但当我插入数据时,它是错误的 ORA-065
CREATE OR REPLACE TRIGGER auto_id
BEFORE INSERT ON login
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
:NEW.id := :NEW.id || to_char('"S-"',to_char(seq_log.nextval));
END login;
但当我插入数据时,它是错误的
ORA-06502:PL/SQL:数字或值错误:字符到数字转换错误
ORA-06512:“WKSP_WORKSPACE0089.自动识别码”,第3行
ORA-04088:执行触发器“WKSP_WORKSPACE0089.AUTO_ID”时出错
ORA-06512:在“SYS.DBMS_SQL”中,第1721行应该是
:NEW.id := :NEW.id || 'S-' || to_char(seq_log.nextval);
如果将
id
声明为数字而不是字符串,则会发生这种情况。