Diskussion:Einführung in SQL: Tabellenstruktur der Beispieldatenbank

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Beispieldatenbank anlegen[Bearbeiten]

MS-SQL[Bearbeiten]

Ich habe das MS-SQL Beispiel aktualisiert, da das alte Script nicht im MS-SQL 2008 Dialekt funktionierte.

  • AUTO_INCREMENT, wurde durch IDENTITY [ (seed , increment) ] ersetzt.
  • Desweiteren musste ein CONVERT(varchar, Abteilung_ID) eingefügt werden und das FROM und FOR durch Kommas ersetzt werden um die Kette "SELECT 'DO-WB 3' + Abteilung_ID + SUBSTRING(Personalnummer FROM 5 FOR 1)" zu bauen.
  • Da die ID im Abschnitt "Laufende Daten: ein paar erste Schadensfälle" gesetzt wird, musste der IDENTITY_INSERT beim Schadensfall aktiviert werden.

--Skittle 11:53, 12. Feb. 2010 (CET)

Danke recht herzlich, endlich jemand, der mir dabei hilft!
  • zu AUTO_INCREMENT: Es wundert mich, dass so etwas wegfällt; dann muss ich das auch an den anderen Stellen bei DDL-Befehlen erwähnen.
  • zu CONVERT: Es war mir nicht klar, welches DBMS so etwas automatisch konvertiert und welches nicht.
  • SUBSTRING habe ich immer mit FROM/FOR geschrieben, weil das der SQL-Standard 2003 war. Hier, wo es explizit um ein Skript für MS-SQL geht, muss das natürlich geändert werden.
  • IDENTITY_INSERT: Muss das dann nicht überall aktiviert werden? Denn die ID wird bei keinem Datensatz manuell zugewiesen.
Gruß Jürgen 12:08, 12. Feb. 2010 (CET)

MySql[Bearbeiten]

Eine IP hatte in der vergangenen Nacht einen Fehler im MySql-Skript festgestellt. Die Änderung, die er/sie daraufhin vorgenommen hatte, war allerdings ziemlich sinnfrei (alle Dienstwagen bekamen dasselbe Kennzeichen) und sorgte nur dafür, dass im Moment kein Fehler mehr auftritt. (Dafür wird es später knallen, wenn diese Spalte auf UNIQUE gesetzt wird; dann kann er/sie sich noch einmal fälschlicherweise über die Autoren dieses Buches aufregen.)

Ich habe die Änderung rückgängig gemacht und stattdessen an zwei Stellen ein CAST eingefügt (ähnlich wie oben bei MS-SQL das CONVERT):

// bisher:
SELECT 'DO-WB 3' + Abteilung_ID + SUBSTRING(Personalnummer FROM 5 FOR 1), ...
// sinnfreie Änderung:
SELECT 'DO-WB 3', ...
// jetzige Formulierung:
SELECT 'DO-WB 3' + CAST(Abteilung_ID AS VARCHAR(8)) + SUBSTRING(Personalnummer FROM 5 FOR 1), 

So sollte es auf jeden Fall funktionieren.

Hoffentlich wird der nächste, der einen Fehler feststellt, Änderungen sauber vornehmen oder sich wenigstens melden.

-- Jürgen 09:25, 12. Mär. 2010 (CET)