ColaFantaBier
Neuer Benutzer
- Beiträge
- 4
Hi Leute,
ich habe ein Datenbankmodell von einer H2 Datenbank (JDBC) als Script und will dieses in eine SQLITE Syntax manuell umkonvertieren, da ich leider kein gutes TOOL für diese Aufgabe gefunden habe.
Insgesamt sind es 55 Tabellen mit ein paar INSERTS.
Viele Sachen haben beim manuellen Konvertieren geklappt, doch ich habe Probleme bei folgender H2 SQL Tabellen-Problemeatik in SQLITE.
Syntax von H2SQL:
-------------------------------------------
CREATE TABLE Tabelle1(
ID INT NOT NULL AUTO_INCREMENT,
`FIELD1_ID` INT NULL,
`FIELD2` VARCHAR(100) NULL,
`FIELD3` INT NOT NULL
`FIELD4` VARCHAR(100) NOT NULL,
PRIMARY KEY (`ID`),
CONSTRAINT BIERBRAU_BLABLA FOREIGN KEY(FIELD1_ID) REFERENCES FIELD1(ID) ON DELETE SET NULL NOCHECK
);
-------------------------------------------
Ich benutzte DB Browser und dort kann man bei " Tabelle erstellen" nur DEFAULT, UNIQUE oder NOT NULL wählen.
In Tabelle erstellen kann man Felder hinzufuegen.
Wenn ich aber selber eine SQL Query erstelle, dann kann ich hinter INTEGER auch die Null einfuegen und der SQL- Code wird ohne Fehler ausgeführt.
Wenn ich mir dann aber die Tabelle wieder angucke , dann ist die NULL weg hinter dem INTEGER bei FIELD1.
Normalerweise dürfte `FIELD1_ID` INT NULL ein Nullable -Wert sein, was also heisst, dass es entweder eine Ganzzahl sein kann, oder NULL.
Ein weiteres Problem habe ich mit NOCHECK hinter der Fremdschlüssel-Klausel "ON DELETE SET NULL".
Anscheinend muss man bei SQLITE für NOCHECK ein PRAGMA benutzen. Aber so ganz verstehe ich das nicht.
PRAGMA schema.foreign_key_check(`TABLE`);
-- Disable checks:
PRAGMA foreign_keys = OFF;
-- Enable checks:
PRAGMA foreign_keys = ON;
Ich habe hier mal meinen umgeschriebenen Code in SQLite hier.
Aber ich weiss nicht genau, wie ich das in meinen Code einfuegen kann.
SQL Syntax:
-------------------------------------------
PRAGMA foreign_keys = ON;
PRAGMA schema.foreign_key_check(`Tabelle1`);
CREATE TABLE `Tabelle1` (
`ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`FIELD1_ID` INTEGER NULL,
`FIELD2` TEXT NULL,
`FIELD3` INTEGER NOT NULL
`FIELD4` TEXT NOT NULL,
CONSTRAINT `BIERBRAU_BLABLA ` FOREIGN KEY(`FIELD1_ID`) REFERENCES `FIELD1`(`ID`) ON DELETE SET NULL ,
);
-------------------------------------------
Ich hoffe mir kann jemand weiter helfen.
Beste Grüße
ich habe ein Datenbankmodell von einer H2 Datenbank (JDBC) als Script und will dieses in eine SQLITE Syntax manuell umkonvertieren, da ich leider kein gutes TOOL für diese Aufgabe gefunden habe.
Insgesamt sind es 55 Tabellen mit ein paar INSERTS.
Viele Sachen haben beim manuellen Konvertieren geklappt, doch ich habe Probleme bei folgender H2 SQL Tabellen-Problemeatik in SQLITE.
Syntax von H2SQL:
-------------------------------------------
CREATE TABLE Tabelle1(
ID INT NOT NULL AUTO_INCREMENT,
`FIELD1_ID` INT NULL,
`FIELD2` VARCHAR(100) NULL,
`FIELD3` INT NOT NULL
`FIELD4` VARCHAR(100) NOT NULL,
PRIMARY KEY (`ID`),
CONSTRAINT BIERBRAU_BLABLA FOREIGN KEY(FIELD1_ID) REFERENCES FIELD1(ID) ON DELETE SET NULL NOCHECK
);
-------------------------------------------
Ich benutzte DB Browser und dort kann man bei " Tabelle erstellen" nur DEFAULT, UNIQUE oder NOT NULL wählen.
In Tabelle erstellen kann man Felder hinzufuegen.
Wenn ich aber selber eine SQL Query erstelle, dann kann ich hinter INTEGER auch die Null einfuegen und der SQL- Code wird ohne Fehler ausgeführt.
Wenn ich mir dann aber die Tabelle wieder angucke , dann ist die NULL weg hinter dem INTEGER bei FIELD1.
Normalerweise dürfte `FIELD1_ID` INT NULL ein Nullable -Wert sein, was also heisst, dass es entweder eine Ganzzahl sein kann, oder NULL.
Ein weiteres Problem habe ich mit NOCHECK hinter der Fremdschlüssel-Klausel "ON DELETE SET NULL".
Anscheinend muss man bei SQLITE für NOCHECK ein PRAGMA benutzen. Aber so ganz verstehe ich das nicht.
PRAGMA schema.foreign_key_check(`TABLE`);
-- Disable checks:
PRAGMA foreign_keys = OFF;
-- Enable checks:
PRAGMA foreign_keys = ON;
Ich habe hier mal meinen umgeschriebenen Code in SQLite hier.
Aber ich weiss nicht genau, wie ich das in meinen Code einfuegen kann.
SQL Syntax:
-------------------------------------------
PRAGMA foreign_keys = ON;
PRAGMA schema.foreign_key_check(`Tabelle1`);
CREATE TABLE `Tabelle1` (
`ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`FIELD1_ID` INTEGER NULL,
`FIELD2` TEXT NULL,
`FIELD3` INTEGER NOT NULL
`FIELD4` TEXT NOT NULL,
CONSTRAINT `BIERBRAU_BLABLA ` FOREIGN KEY(`FIELD1_ID`) REFERENCES `FIELD1`(`ID`) ON DELETE SET NULL ,
);
-------------------------------------------
Ich hoffe mir kann jemand weiter helfen.
Beste Grüße