ORACLE: SELECT zeigt Daten nicht immer an

SG_wXistenZ

Mitglied
Guten Morgen Tutorials,

ich arbeite mich gerade in die Thematik Oracle und SQLplus ein. Dabei habe ich ein kleines Problemchen das mir Kopfzerbrechen bereitet...

Ich erstellte eine Sequence wie folgt:
Code:
create sequence dm_seq_TAid increment by 1 start with 1 cache 2;

Danach die Tabelle...
Code:
CREATE TABLE dm_tbl_ta(
TAid NUMBER(20,0),
TAart VARCHAR(25),
TAaufgbr VARCHAR(35),
TAempfgr VARCHAR(35),
TAfrctzlr VARCHAR(35),
TAzhltxt VARCHAR(255),
TKS_id NUMBER(20,0)
);
und dann den Trigger um den Autowert nutzen zu können:
Code:
CREATE TRIGGER dm_trg_TAid BEFORE INSERT TAid
REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW
Begin
select dm_seq_TAid.nextval into :NEW.TAid from DUAL;
End;

zum Schluß teste ich das Ganze mit einem Test-Insert:
Code:
INSERT INTO dm_tbl_ta
(
TAid, TAart, TAaufgbr, TAempfgr, TAfrctzlr, TAzhltxt, TKS_id
)
VALUES
(
12345, 'a', 'b', 'c', 'd', 'e', 9876
)

Das funktioniert scheinbar, da es keine Fehlermeldung gab!
Aber beim SELECT(
Code:
SELECT * FROM dm_tbl_ta;
) überlebte ich dann eine Überraschung:

1. Ich bekomme keine Tabelle angezeigt, sondern jeden SpaltenWert ein einer eigenen Zelle...

2. Nachdem ich SQLplus geschlossen habe, zeigt der SELECT Befehl keine Daten mehr an, was wohl bedeutet, das die Daten nicht wirklich gespeichert wurde...

Wer kann mir weiterhelfen?

Salü,
eXi
 
Zum einen ist der Trigger überflüssig, da Du die ID aus der Sequence direkt benutzen kannst:

INSERT INTO dm_tbl_ta ( TAid, TAart, TAaufgbr, TAempfgr, TAfrctzlr, TAzhltxt, TKS_id )
VALUES ( dm_seq_TAid.nextval, 'a', 'b', 'c', 'd', 'e', 9876 )
zum anderen musst Du Transaktionen in Oracle mit COMMIT abschließen.

Nach oder zwischen den Inserts einfach COMMIT ; in SQLPlus eingeben.
 

Neue Beiträge

Zurück