ORACLE - Autoincrement funktioniert nicht

y0dA

Erfahrenes Mitglied
Hi!
Also ich versuche mich gerade daran einen Primärschlüssen einer meiner Tabellen mittels einem Trigger und einer Sequenz automatisch hochzuzählen - leider bekomme ich immer folgende Fehlermeldung:
Code:
Error: PL/SQL: ORA-00947: Anzahl der Werte reicht nicht aus

Hier meine Tabelle:
Code:
CREATE TABLE FEATURE_TYPE (
       FT_ID VARCHAR2(25) CONSTRAINT pk_feature_type PRIMARY KEY,
       FT_TYPE CHAR,
       FT_NAME VARCHAR2(50)
);

Bei der Durchführung folgendes Statements:
Code:
           INSERT INTO FEATURE_TYPE

                  VALUES ('P', 'COUNTRY');

Meine Sequenz:
Code:
CREATE SEQUENCE FEATURE_TYPE_SEQ
       START WITH 1
       INCREMENT BY 1
       NOMAXVALUE;

Und mein Trigger:
Code:
CREATE TRIGGER FEATURE_TYPE_TRIGGER
       BEFORE INSERT ON FEATURE_TYPE
       FOR EACH ROW
       BEGIN
           SELECT FEATURE_TYPE_SEQ.NEXTVAL INTO :NEW.FT_ID FROM DUAL;
END;

Anmerkung: der Primärschlüssel der Tabelle FEATURE_TYPE ist in weiterer Folge in einer anderen Tabelle ein Fremdschlüssel (falls das wichtig wäre)
 
Habs nun geschafft, irgendwie funktionierte das INSERT Statement nicht in der obigen Form!

So funktioniert es:
Code:
 INSERT INTO FEATURE_TYPE (FT_TYPE, FT_NAME)
                  VALUES (geo_type, C_REC.Feat_Type);
 
Hallo,
ich versuche gerade auch ein auto_ increment in oracle zu realisieren. Hab dazu genau wie oben sequence und trigger geschrieben.
Bei meinen insert statements kommt dann immer der fehler:

trigger ist ungültig und konnte nicht neu bestätigt werden.

Der vollständigkeit halber, der code:

PHP:
//Table
create table test (id number, testdata varchar2(255));

//Sequence
create sequence test_seq
start with 1
increment by 1
nomaxvalue;

//TRIGGER
create trigger test_trigger
before insert on test
for each row
begin
select test_seq.nextval into :new.id from dual; end;
/

//INSERT
insert into test(testdata) values('blaa')
 
Zuletzt bearbeitet:
Zurück