Announcement

Collapse
No announcement yet.

Autowert in Oracle

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Autowert in Oracle

    Hallo,
    einige Beiträge zum Thema Autowert haben mit schon geholfen. Folgendes habe ich gemacht:

    1. Tabelle erstellen:

    CREATE TABLE Test (
    ID_Test DECIMAL (10,0) NOT NULL,
    Feld1 VARCHAR2 (50) NULL,
    Feld2 VARCHAR2 (50) NULL,
    CONSTRAINT TE_ID_Test_pk PRIMARY KEY (ID_Test)
    )
    /

    2. Sequenz erstellen:

    CREATE SEQUENCE s_ID_Test START WITH 1 INCREMENT BY 1

    3. Trigger anlegen:

    CREATE TRIGGER T_ID_TEST
    BEFORE INSERT ON TEST
    FOR EACH ROW
    BEGIN
    SELECT S_ID_TEST.NEXTVAL INTO :NEW.ID FROM DUAL;
    END;
    /

    Schon beim erstellen des Triggers kommt die Fehlermeldung: Trigger wurde mit Kompilierungsfehlern erstellt.
    Bei einer Insert Into Anweisung folgt: Trigger 'PUB.T_ID_TEST' ist ungültig und konnte nicht neu bestätigt werden.
    Was ist falsch???
    Sylvio

  • #2
    Hallo melodoi!<br>
    Das direkte selecten in ein :NEW-Feld funktioniert nicht, Du brauchst eine Zwischenvariable, die den Wert erst einmal aufnimmt:<br><br>

    CREATE TRIGGER T_ID_TEST<br>
    BEFORE INSERT ON TEST FOR EACH ROW<br>
    DECLARE<br>
    PK_TEST NUMBER(10,0);<br>
    BEGIN<br>
    SELECT S_ID_TEST.NEXTVAL INTO PK_TEST FROM DUAL;<br>
    :NEW.ID_Test := PK_TEST;<br>
    END;<br>
    <br>
    Das sollte dann funktionieren.

    Gruß

    Peter Tabat

    Comment


    • #3
      <pre>CREATE TRIGGER T_ID_TEST BEFORE INSERT
      ON TEST FOR EACH ROW
      BEGIN
      SELECT S_ID_TEST.NEXTVAL INTO :NEW.<b>ID_TEST</b>
      FROM DUAL;
      END;</pre&gt
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment

      Working...
      X