![]() |
Datenbank: Firebird • Version: 1.5.2 • Zugriff über: IBX 6.0
FOREIGN KEY läßt sich nicht anlegen
Hallo,
ich möchte folgendes umsetzten. Der Benutzer kann Daten für eine bestimmte Version aus einer Exceltabelle in die Datenbank schieben. Die Version wird vom Admin in der Tabelle VERSIONEN verwaltet. Den Dateinamen und den Arbeitsblattnamen muss der Benutzer frei wählen können. Auch die Anzahl der Exceldateien, die der Benutzer für die Dateneingabe verwendet ist und muss beliebig sein. Wenn der Benutzer das erste Mal Daten einspielt soll in der Datenbank eine passende Tabelle (SQL s.u.) erzeugt werden. Der Tabellenname in der Datenbank leitet sich aus dem Dateinamen und dem Arbeitsblattnamen der Exceldatei ab. Diese Tabelle soll einen FOREIGN KEY auf die Versionstabelle bekommen. Wenn jetzt vom Admin eine Version gelöscht wird werden automatisch in den Datentabellen die zur Version passenden Datensätze gelöscht. Über einen Trigger wird beim INSERT die Nummer der aktiven Version aus der Tabelle VERSIONEN geholt und in das Feld VER geschrieben. Das funktioniert auch alles. Problematisch wird es, wenn ein zweiter Benutzer angemeldet ist. Die Rechte für die Tabelle VERSIONEN sind wie folgt vergeben: USER1 ALL USER2 SELECT,UPDATE,DELETE,INSERT Wenn USER1 die Tabelle anlegen möchte erhält er folgende Fehlermeldung
Code:
USER2 hat bis dahin noch nichts mit der Datenbank gemacht. Nur angemeldet.
ISC ERROR CODE:335544351
ISC ERROR MESSAGE: unsuccessful metadata update object VERSIONEN is in use Es ist auch egal ob USER1 die Tabelle aus der Anwendung heraus anlegen möchte oder über die IBOConsole.
SQL-Code:
Über einen Trigger wird beim INSERT die ID der aktiven Version aus der Tabelle VERSIONEN geholt und in das Feld VER geschrieben.
CREATE TABLE "INPUT_TEST"
( "JAHR" TINT , "VER" TINT , "KATEGORIE" TSTRING30 COLLATE DE_DE, "PARTNER" TSTRING15 COLLATE DE_DE, "EMPF" TSTRING15 COLLATE DE_DE, "PLANWERT" DOUBLE PRECISION, "POSNR" TSTRING30 COLLATE DE_DE, "BWA" TSTRING15 COLLATE DE_DE, "SAISON" TINT, CONSTRAINT FK_VERSION FOREIGN KEY ("VER") REFERENCES "VERSIONEN" ("ID") ON UPDATE CASCADE ON DELETE CASCADE ); |
Re: FOREIGN KEY läßt sich nicht anlegen
Hi,
das Anlegen eines Foreign Key unter Firebird benötigt noch exclusiven Zugriff. Erst ab der Version 2 wird es anders. In der aktuellen Beta kann man es unter den Release Notes nachlesen. Ich warte auch sehnsüchtig auf Version 2 und damit Änderungen wie: Benutzer kann eigenes Passwort ändern... brute-force Verzögerung... Stringfunktionen wie Trim, Lower ... Cu, Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz