Ich möchte Tabelle in Firebird eingebettet erstellen und eine Spalte für die automatische Erhöhung, aber ich kann nicht. Ich kann die Tabelle erstellen, kann aber keine Spalte für automatisches Inkrement festlegen.Erstellen Sie Tabelle und Auto Inkrementieren Spalte in Firebird mit Delphi
Ich verwende:
Embedded Firebird 2.5
Delphi XE3
UniDAC Componnent
mein SQL-Befehl:
with UniSQL1 do
begin
SQL.Text := 'Create TABLE tab1(EMP_NO EMPNO NOT NULL, '+
'FIRST_NAME "FIRSTNAME" NOT NULL, '+
'LAST_NAME "LASTNAME" NOT NULL, '+
'PHONE_EXT VARCHAR( 4) COLLATE NONE, '+
'PRIMARY KEY (EMP_NO) '+
'); '+
'CREATE GENERATOR gen_tab1_EMP_NO; '+
'SET GENERATOR gen_tab1_EMP_NO TO 0; '+
'SET TERM !! ; '+
'CREATE TRIGGER SET_EMP_NO FOR tab1 ACTIVE BEFORE INSERT POSITION 0 AS '+
'BEGIN '+
'if (new.emp_no is null) then '+
'new.emp_no = gen_id(gen_tab1_EMP_NO, 1); '+
'END !!'+
'SET TERM ; !!';
try
Execute;
ShowMessage('Table Created');
except
ShowMessage('Table Not Created');
end;
end;
Bitte beschreiben Sie das Problem, und zeigen Sie alle Fehler, die Sie erhalten. Beachten Sie auch, dass Sie versuchen, mehrere Anweisungen gleichzeitig auszuführen: Firebird selbst lässt dies nicht zu, stellen Sie also sicher, dass dies tatsächlich von der Komponente unterstützt wird, die Sie verwenden (dh es teilt sie in separate Anweisungen für Sie auf). –
Vergessen Sie nicht, nach jeder Anweisung zu committen, aber ich weiß nicht, warum Sie diese Anweisungen nicht auf einer Datenbank-Ebene statt in Delphi-Code ausführen, da diese Anweisungen sicherlich nur einmal ausgeführt werden. – Fero
@ Fero68 Es ist nicht notwendig, nach jeder DDL-Anweisung zu committen, gleich nach der ganzen Arbeitseinheit. –