|
Antwort |
Registriert seit: 28. Mär 2006 Ort: 32816 Schieder-Schwalenberg 397 Beiträge Delphi 10.4 Sydney |
#1
Hallo
ich habe hier zwei Firebird Datenbanken die eigentlich gleich sein sollten. In einer Datenbank ist ein feld mit computed (Rechnungsjahr|| '-' ||Rechnungsnummer) In der anderen Datenbank gibt es auch dieses Feld jedoch ohne computed warum weiß ich nicht. Wie kann man diese die Datenbanken abgleichen. Mit IB Expert geht es nicht. Hier die Updatebefehle in IBExpert
Delphi-Quellcode:
Beim ausführen des Update scripts kommen diese Meldungen:
ALTER TABLE TBL_ADRESS ALTER COLUMN NAMEKOMPLETT
/* VARCHAR(141) */ COMPUTED BY (Vorname|| ' ' ||Name); ALTER TABLE TBL_BUCHHALTUNG ALTER COLUMN MONAT /* SMALLINT */ COMPUTED BY (extract(month from BELEGDATUM)); ALTER TABLE TBL_BUCHHALTUNG ALTER COLUMN JAHR /* SMALLINT */ COMPUTED BY (extract(year from BELEGDATUM)); ALTER TABLE TBL_KRAEUTERKALKPOS ALTER COLUMN GESAMTPREIS /* DOUBLE PRECISION */ COMPUTED BY (Menge * PreisPro100/100); ALTER TABLE TBL_KRAEUTERKALKULATION ALTER COLUMN EKPROZENTPREIS /* DOUBLE PRECISION */ COMPUTED BY (EKPreis * EKProzent/100); ALTER TABLE TBL_KRAEUTERKALKULATION ALTER COLUMN EKGESAMTPREIS /* DOUBLE PRECISION */ COMPUTED BY (EKPreis + EKProzentPreis); ALTER TABLE TBL_KRAEUTERKALKULATION ALTER COLUMN VKGESAMTPREIS /* DOUBLE PRECISION */ COMPUTED BY (EKGesamtpreis + PreisVerpackung + PreisBriefmarke + PreisUmschlag + Arbeitspreis); ALTER TABLE TBL_KRAEUTERKALKULATION ALTER COLUMN MENGEPROTAG /* DOUBLE PRECISION */ COMPUTED BY (GesamtMenge/Anwendungsdauer); ALTER TABLE TBL_LIEFERANT ALTER COLUMN ANREDE_NAME /* VARCHAR(106) */ COMPUTED BY (Anrede || ' ' || Name); ALTER TABLE TBL_LIEFERANT ALTER COLUMN NAMEKOMPLETT /* VARCHAR(141) */ COMPUTED BY (Vorname|| ' ' ||Name); ALTER TABLE TBL_MITARBEITER ALTER COLUMN ANREDE_NAME /* VARCHAR(106) */ COMPUTED BY (Anrede || ' ' || Name); ALTER TABLE TBL_MITARBEITER ALTER COLUMN NAMEKOMPLETT /* VARCHAR(141) */ COMPUTED BY (Vorname|| ' ' ||Name); ALTER TABLE TBL_PATBLATT ALTER COLUMN BEHANDLUNGSMONAT /* SMALLINT */ COMPUTED BY (extract(month from BEHANDLUNGSDATUM)); ALTER TABLE TBL_PATBLATT ALTER COLUMN BEHANDLUNGSJAHR /* SMALLINT */ COMPUTED BY (extract(year from BEHANDLUNGSDATUM)); ALTER TABLE TBL_PATIENT ALTER COLUMN NAMEKOMPLETT /* VARCHAR(141) */ COMPUTED BY (Vorname|| ' ' ||Name); ALTER TABLE TBL_RECHNUNG ALTER COLUMN RECHNUNGSNUMMERKOMPLETT /* VARCHAR(23) */ COMPUTED BY (Rechnungsjahr|| '-' ||Rechnungsnummer); ALTER TABLE TBL_RECHNUNG ALTER COLUMN NAMEKOMPLETT /* VARCHAR(107) */ COMPUTED BY (Vorname|| ' ' ||Name); ALTER TABLE TBL_RECHNUNGSPOSITIONEN ALTER COLUMN BEHANDLUNGSMONAT /* SMALLINT */ COMPUTED BY (extract(month from BEHANDLUNGSDATUM)); ALTER TABLE TBL_RECHNUNGSPOSITIONEN ALTER COLUMN BEHANDLUNGSJAHR /* SMALLINT */ COMPUTED BY (extract(year from BEHANDLUNGSDATUM)); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column NAMEKOMPLETT. ------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_ADRESS ALTER COLUMN NAMEKOMPLETT /* VARCHAR(141) */ COMPUTED BY (Vorname|| ' ' ||Name); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column MONAT. ------------------------------------------------ SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_BUCHHALTUNG ALTER COLUMN MONAT /* SMALLINT */ COMPUTED BY (extract(month from BELEGDATUM)); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column JAHR. ------------------------------------------------ SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_BUCHHALTUNG ALTER COLUMN JAHR /* SMALLINT */ COMPUTED BY (extract(year from BELEGDATUM)); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column GESAMTPREIS. ------------------------------------------------------ SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_KRAEUTERKALKPOS ALTER COLUMN GESAMTPREIS /* DOUBLE PRECISION */ COMPUTED BY (Menge * PreisPro100/100); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column EKPROZENTPREIS. --------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_KRAEUTERKALKULATION ALTER COLUMN EKPROZENTPREIS /* DOUBLE PRECISION */ COMPUTED BY (EKPreis * EKProzent/100); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column EKGESAMTPREIS. -------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_KRAEUTERKALKULATION ALTER COLUMN EKGESAMTPREIS /* DOUBLE PRECISION */ COMPUTED BY (EKPreis + EKProzentPreis); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column VKGESAMTPREIS. -------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_KRAEUTERKALKULATION ALTER COLUMN VKGESAMTPREIS /* DOUBLE PRECISION */ COMPUTED BY (EKGesamtpreis + PreisVerpackung + PreisBriefmarke + PreisUmschlag + Arbeitspreis); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column MENGEPROTAG. ------------------------------------------------------ SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_KRAEUTERKALKULATION ALTER COLUMN MENGEPROTAG /* DOUBLE PRECISION */ COMPUTED BY (GesamtMenge/Anwendungsdauer); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column ANREDE_NAME. ------------------------------------------------------ SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_LIEFERANT ALTER COLUMN ANREDE_NAME /* VARCHAR(106) */ COMPUTED BY (Anrede || ' ' || Name); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column NAMEKOMPLETT. ------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_LIEFERANT ALTER COLUMN NAMEKOMPLETT /* VARCHAR(141) */ COMPUTED BY (Vorname|| ' ' ||Name); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column ANREDE_NAME. ------------------------------------------------------ SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_MITARBEITER ALTER COLUMN ANREDE_NAME /* VARCHAR(106) */ COMPUTED BY (Anrede || ' ' || Name); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column NAMEKOMPLETT. ------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_MITARBEITER ALTER COLUMN NAMEKOMPLETT /* VARCHAR(141) */ COMPUTED BY (Vorname|| ' ' ||Name); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column BEHANDLUNGSMONAT. ----------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_PATBLATT ALTER COLUMN BEHANDLUNGSMONAT /* SMALLINT */ COMPUTED BY (extract(month from BEHANDLUNGSDATUM)); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column BEHANDLUNGSJAHR. ---------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_PATBLATT ALTER COLUMN BEHANDLUNGSJAHR /* SMALLINT */ COMPUTED BY (extract(year from BEHANDLUNGSDATUM)); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column NAMEKOMPLETT. ------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_PATIENT ALTER COLUMN NAMEKOMPLETT /* VARCHAR(141) */ COMPUTED BY (Vorname|| ' ' ||Name); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column RECHNUNGSNUMMERKOMPLETT. ------------------------------------------------------------------ SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_RECHNUNG ALTER COLUMN RECHNUNGSNUMMERKOMPLETT /* VARCHAR(23) */ COMPUTED BY (Rechnungsjahr|| '-' ||Rechnungsnummer); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column NAMEKOMPLETT. ------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_RECHNUNG ALTER COLUMN NAMEKOMPLETT /* VARCHAR(107) */ COMPUTED BY (Vorname|| ' ' ||Name); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column BEHANDLUNGSMONAT. ----------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_RECHNUNGSPOSITIONEN ALTER COLUMN BEHANDLUNGSMONAT /* SMALLINT */ COMPUTED BY (extract(month from BEHANDLUNGSDATUM)); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. Cannot add or remove COMPUTED from column BEHANDLUNGSJAHR. ---------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_RECHNUNGSPOSITIONEN ALTER COLUMN BEHANDLUNGSJAHR /* SMALLINT */ COMPUTED BY (extract(year from BEHANDLUNGSDATUM)); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. STORE RDB$RELATION_CONSTRAINTS failed. attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_12". Problematic key value is ("RDB$CONSTRAINT_NAME" = 'CHK_TBL_BUCHHALTUNG'). ------------------------------------------------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_BUCHHALTUNG ADD CONSTRAINT CHK_TBL_BUCHHALTUNG CHECK(((Belegnummer is not Null) and (Belegnummer >0))); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. STORE RDB$RELATION_CONSTRAINTS failed. attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_12". Problematic key value is ("RDB$CONSTRAINT_NAME" = 'CHK_TBL_KASSENBUCH'). ------------------------------------------------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_KASSENBUCH ADD CONSTRAINT CHK_TBL_KASSENBUCH CHECK(((Belegnummer is not Null) and (Belegnummer >0))); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. STORE RDB$RELATION_CONSTRAINTS failed. attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_12". Problematic key value is ("RDB$CONSTRAINT_NAME" = 'CHK_TBL_PAREZEPT'). ------------------------------------------------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_PAREZEPT ADD CONSTRAINT CHK_TBL_PAREZEPT CHECK((DATUM is not Null)); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. STORE RDB$RELATION_CONSTRAINTS failed. attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_12". Problematic key value is ("RDB$CONSTRAINT_NAME" = 'CHK_TBL_TEXTBAUSTEINE'). ------------------------------------------------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_TEXTBAUSTEINE ADD CONSTRAINT CHK_TBL_TEXTBAUSTEINE CHECK(SUCHWORT <> ''); /************************************************** ***************************** Die nächste Anweisung verursacht folgenden Fehler: This operation is not defined for system tables. unsuccessful metadata update. STORE RDB$RELATION_CONSTRAINTS failed. attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_12". Problematic key value is ("RDB$CONSTRAINT_NAME" = 'CHK_TBL_TPAREZEPT'). ------------------------------------------------------------------------------------------------- SQLCODE: -607 SQLSTATE: 42000 GDSCODE: 335544351 ************************************************** *****************************/ ALTER TABLE TBL_TPAREZEPT ADD CONSTRAINT CHK_TBL_TPAREZEPT CHECK((DATUM is not Null)); Hat jemand eine Idee wie ich die beiden Tabellen gleich bekomme.
Walter Landwehr
Mfg Walter |
Zitat |
Walter Landwehr |
Öffentliches Profil ansehen |
Mehr Beiträge von Walter Landwehr finden |
(Moderator)
Registriert seit: 9. Dez 2005 Ort: Heilbronn 39.858 Beiträge Delphi 11 Alexandria |
#2
Versuch esmal mit DROP/ADD statt ALTER
Markus Kinzler
|
Zitat |
Registriert seit: 7. Aug 2008 Ort: Brandenburg 1.464 Beiträge Delphi 12 Athens |
#3
Die DB kann eine ältere Version haben als der Server. Dieser kann die DB trotzdem öffnen, unterstütz aber nicht alle Kommandos.
Wenn du dir ein Skript zur Umstellung von IBExpert erstellen lässt, sollte die eingestellte DB-Version wirklich die Version der Ziel-DB sein. Sonst werden eventuell Statements generiert, die diese Datenbank nicht ausführen kann. Versuch esmal mit DROP/ADD statt ALTER
Weiter unten sind noch einige Fehler, weil bereits Datensätze vorhanden sind, die der neu hinzuzufügenden Bedingung nicht entsprechen. (z.B. Datensätze ohne Belegnummer, aber die Bedingung erfordert eine oder sogar eine eindeutige Belegnummer) Diese vielen kalkulierten Felder bringen aus Sicht der DB-Entwicklung keinen Vorteil. Dafür nehmen die Datensätze mehr Speicher in Anspruch. Die selbe Vereinfachung für Abfragen lässt sich auch mit einer VIEW erreichen, die den Inhalt der kalkulierten Felder bei Bedarf ermittelt. |
Zitat |
Registriert seit: 6. Feb 2006 Ort: Moers 536 Beiträge Delphi 12 Athens |
#4
Ich mag die berechneten Felder auch nicht, die sind ja nicht editierbar und man muss immer aufpassen das die nie in irgendwelche Update oder Insert-Statements auftauchen, z.B. wenn man über einen Script Daten Importiert.
Ralf
Gruß vom Niederrhein |
Zitat |
Registriert seit: 28. Mär 2006 Ort: 32816 Schieder-Schwalenberg 397 Beiträge Delphi 10.4 Sydney |
#5
Habe jetzt die Felder gelöscht und neu angelegt. Nun ist alles gut.
Danke an alle.
Walter Landwehr
Mfg Walter |
Zitat |
Walter Landwehr |
Öffentliches Profil ansehen |
Mehr Beiträge von Walter Landwehr finden |
Ansicht |
Linear-Darstellung |
Zur Hybrid-Darstellung wechseln |
Zur Baum-Darstellung wechseln |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
LinkBack URL |
About LinkBacks |