Ich habe eine Tabelle mit dem Namen Users
mit nur 2 Spalten id
(in Typ NUMBER
) und Name
(in Typ VARCHAR2
). Alle Spalten sind nicht-nullableEinfügen von Werten in eine Spalte, ohne sie durch einen Parameter zu übergeben?
ich eine SQL-Prozedur erstellt nur in einem Parameter (neue Benutzername) zu nehmen, wie folgt:
CREATE OR REPLACE PROCEDURE insert_new_user
(
this_name VARCHAR2;
)
AS
BEGIN
INSERT INTO Users
VALUES (this_name);
COMMIT;
END;
/
Das Verfahren stellt aber mit Fehlern wie folgt: Fehler ORA-00947: nicht genug Werte.
Wenn ich führen Sie es wie folgt:
BEGIN
insert_new_user ('Bob');
END
/
Es wirft ein PL/SQL-Kompilierung-Fehler.
Wie stelle ich die Spalte id
so ein, dass automatisch die nächste Nummer eingegeben wird, ohne dass sie durch einen Parameter übergeben werden muss?
2 Ben
3 Bob
Wo Bob
die neue
ID Name
1 Adam ist:
Der ideale Ausgangs wäre ein Szenario wie sein Benutzerzeile eingefügt in die
user
Tabelle und3
ist die Nummer automatisch in derid
Spalte hinzugefügt.
ID-Spalte ist eine Identitätsspalte? –
Ja, es ist die PK – 5120bee
Primärschlüssel und Identität sind nicht gleich. Identitätsspaltenwerte sind automatisch inkrementell. In Ihrem Fall, wenn die ID-Spalte der Primärschlüssel ist, aber nicht automatisch inkrementell, müssen Sie einen Wert dafür angeben, wenn Sie eine Zeile in die Tabelle einfügen. Antwort von @Dan unten sollte mehr Details über die automatische inkrementelle Spalte geben. –