Hallo!
Systemumgebung:
Firebird 1.5 (Version 1.5.2.4731) auf Windows 2003 Server
Die Datenbank wurde von Interbase 5.6 auf Firebird importiert.
Da es ein schon etwas älteres, verteiltes System ist wird auf die Datenbank in einem Programm über die
BDE zugegriffen. In dem Programm welches jedoch die Fehlermeldung wirft werde die Interbase Komponenten von Delphi 7 verwendet!
Das bestehende System wurde in einer Tabelle um ein weiteres Feld ergänzt. Oder einfach:
ALTER Tabelle1 ADD foobar TSTR255
Die Damain TSTR255 ist wie folgt in der
DB deklariert:
CREATE DOMAIN TSTR255 AS
VARCHAR(255) CHARACTER SET ISO8859_1
DEFAULT ""
NOT NULL
COLLATE ISO8859_1
UPDATE Tabelle1 SET foobar = null
führt folgerichtig zu der Fehlermeldung:
The insert failed because a column definition includes validation constraints.
validation error for column STAPLER, value "*** null ***".
In die Tabelle1 werden Daten mittels
INSERT INTO Tabelle1 (Feld1, Feld2, Feld3) VALUES (1,2,3)
eingefügt. Dieser Aufruf ist in einer Storedprocedure hinterlegt und wird über die
BDE aufgerufen. Nach dem Import der Daten hat das Feld foobar den Wert NULL.
Als wenn das nicht schon merkwürdig genüg wäre bekomme ich in ein einem anderen Prgramm bei einem Update auf die Tabelle1
die Fehlermeldung von oben "The insert faild because ..." In den anderen Programmen kommt die Meldung troz Update auf Tabelle1 nicht! Und nein das Feld foobar wird in diesem Programm nicht auf NULL gesetzt
UPDATE Tabelle1 SET Field2 = 1 WHERE Field1 = <irgentwas>
Meine Frage ist warum und wie kann das Feld foobar "plötzlich" Null werden?
Ich habe auch versucht im Import das Feld fix über den INSERT Befehl mit einem Wert zu füllen:
INSERT INTO Tabelle1 (Feld1, Feld2, Feld3, foobar) VALUES (1,2,3, "")
aber auch dies brachte keine Erfolg.
Für eine Idee woran das liegt wäre ich dankbar.
Gruß
Michael M.