Für das Universal-Datenmodul wäre es besonders blöd wenn dann ein SQL-File mit Daten und Strukturdefinitionen mitgeliefert wird das nicht auf andere Server passt.
Jetzt ärgere ich mich schon eine zeitlang herum um zumindest ein kompatibles Create Statement zu schreiben das wenigstens von SQLite und MySQL/MariaDB akzeptiert wird,
hat da jemand einschlägige Erfahrungen?
THX
Serverkompatibles CREATE TABLE
-
- Beiträge: 1061
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Serverkompatibles CREATE TABLE
Ja 
Jeder Server(hersteller) hat da so seine Eigenheiten hineingebracht. Ich würde mal für jeden Server die Scripts extra legen und nach einiger Zeit nach Gemeinsamkeiten erst suchen.
Am besten geht es noch mit dem select, wenn man nur ganz wenig damit macht. Wenn man eingebaute Funktionen dazunimmt oder komplexere Strukturen aufbaut, mit zum Beispiel Sub-Selects, dann wird es schon wieder speziell.

Jeder Server(hersteller) hat da so seine Eigenheiten hineingebracht. Ich würde mal für jeden Server die Scripts extra legen und nach einiger Zeit nach Gemeinsamkeiten erst suchen.
Am besten geht es noch mit dem select, wenn man nur ganz wenig damit macht. Wenn man eingebaute Funktionen dazunimmt oder komplexere Strukturen aufbaut, mit zum Beispiel Sub-Selects, dann wird es schon wieder speziell.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 1061
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Serverkompatibles CREATE TABLE
was in diesem Fall gefragt ist wäre etwas wie das:
Diese Statements sind jetzt Mysql und SQLite kompatibel nachdem ich alle individuellen Teile (Hochkomma, Indizes, Constraints, ref Integrität) rausgenommen habe. Für die paar Beispieldaten braucht es sicher keine Indizes oder irgendwelche Constraints (hoffe ich mal)
Scheinbar war ich gestern zu müde und zu blind um die bösen Teile zu identifizieren.
Code: Alles auswählen
DROP TABLE IF EXISTS Customer ;
CREATE TABLE IF NOT EXISTS Customer (
CustomerId INTEGER NOT NULL,
FirstName VARCHAR(40) NOT NULL,
LastName VARCHAR(20) NOT NULL,
Company VARCHAR(80) NULL,
Address VARCHAR(70) NULL,
City VARCHAR(40) NULL,
State VARCHAR(40) NULL,
Country VARCHAR(40) NULL,
PostalCode VARCHAR(10) NULL,
Phone VARCHAR(24) NULL,
Fax VARCHAR(24) NULL,
Email VARCHAR(60) NOT NULL,
SupportRepId INTEGER NULL,
PRIMARY KEY (CustomerId)
)
;
DELETE FROM Customer;
INSERT INTO Customer (CustomerId, FirstName, LastName, Company, Address, City, State, Country, PostalCode, Phone, Fax, Email, SupportRepId) VALUES
(1, 'Luís', 'Gonçalves', 'Embraer - Empresa Brasileira de Aeronáutica S.A.', 'Av. Brigadeiro Faria Lima, 2170', 'São José dos Campos', 'SP', 'Brazil', '12227-000', '+55 (12) 3923-5555', '+55 (12) 3923-5566', 'luisg@embraer.com.br', 3),
(2, 'Leonie', 'Köhler', NULL, 'Theodor-Heuss-Straße 34', 'Stuttgart', NULL, 'Germany', '70174', '+49 0711 2842222', NULL, 'leonekohler@surfeu.de', 5),
(3, 'François', 'Tremblay', NULL, '1498 rue Bélanger', 'Montréal', 'QC', 'Canada', 'H2G 1A7', '+1 (514) 721-4711', NULL, 'ftremblay@gmail.com', 3),
(4, 'Bjørn', 'Hansen', NULL, 'Ullevålsveien 14', 'Oslo', NULL, 'Norway', '0171', '+47 22 44 22 22', NULL, 'bjorn.hansen@yahoo.no', 4),
(5, 'František', 'Wichterlová', 'JetBrains s.r.o.', 'Klanova 9/506', 'Prague', NULL, 'Czech Republic', '14700', '+420 2 4172 5555', '+420 2 4172 5555', 'frantisekw@jetbrains.com', 4)
;
Scheinbar war ich gestern zu müde und zu blind um die bösen Teile zu identifizieren.
-
- Beiträge: 1061
- Registriert: Sa 12. Sep 2015, 12:10
- OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
- CPU-Target: Win 32/64, Linux64
- Wohnort: Wien
Re: Serverkompatibles CREATE TABLE
Got it
getestet auf SQLite3 und MariaDB.
Wäre fein wenn sich noch jemand findet der das script mal gegen die anderen Datenbanken testet.
Habe das Script in Textform beigelegt und auch noch ein Datenbankdiagramm zur gefälligen Nutzung.
getestet auf SQLite3 und MariaDB.
Wäre fein wenn sich noch jemand findet der das script mal gegen die anderen Datenbanken testet.
Habe das Script in Textform beigelegt und auch noch ein Datenbankdiagramm zur gefälligen Nutzung.
- Dateianhänge
-
- sqlite-sample-database-color.jpg (73.2 KiB) 791 mal betrachtet
-
chinook_customized_sql.txt
- (546.64 KiB) 51-mal heruntergeladen
-
- Lazarusforum e. V.
- Beiträge: 280
- Registriert: Sa 26. Mai 2012, 17:31
- OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
- CPU-Target: 64Bit
Re: Serverkompatibles CREATE TABLE
hmmm...
Firebird möchte den Datentyp Nvarchar nicht.
Also müssten erstmal Basics wie Datentypen gecheckt werden um Kompatibilität erhalten zu können.
Firebird möchte den Datentyp Nvarchar nicht.
Also müssten erstmal Basics wie Datentypen gecheckt werden um Kompatibilität erhalten zu können.
just my two Beer