AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FOREIGN KEY läßt sich nicht anlegen
Thema durchsuchen
Ansicht
Themen-Optionen

FOREIGN KEY läßt sich nicht anlegen

Ein Thema von Jens Schumann · begonnen am 12. Feb 2006 · letzter Beitrag vom 12. Feb 2006
Antwort Antwort
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#1

FOREIGN KEY läßt sich nicht anlegen

  Alt 12. Feb 2006, 16:41
Datenbank: Firebird • Version: 1.5.2 • Zugriff über: IBX 6.0
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:
ISC ERROR CODE:335544351

ISC ERROR MESSAGE:
unsuccessful metadata update
object VERSIONEN is in use
USER2 hat bis dahin noch nichts mit der Datenbank gemacht. Nur angemeldet.
Es ist auch egal ob USER1 die Tabelle aus der Anwendung heraus anlegen möchte oder über die IBOConsole.

SQL-Code:
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 );
Über einen Trigger wird beim INSERT die ID der aktiven Version aus der Tabelle VERSIONEN geholt und in das Feld VER geschrieben.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: FOREIGN KEY läßt sich nicht anlegen

  Alt 12. Feb 2006, 17:33
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
Frank Reim
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz