Hallo Mike,
» wie wäre es mit einer Fehlerbeschreibung?
Du fragst nach einer Fehlerbeschreibung aber zitierst gleichzeitig nachfolgend die gennenten Probleme? Das verstehe ich nicht.
ja selbstverständlich. Ich weiß nicht, was Du erwartest und was Du erhältst.
» »» CREATE TABLE IF NOT EXISTS "main"."t1" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "a" VARCHAR, "b" VARCHAR, "c" TEXT)
» »» Was ist daran falsch?
» wird ausgeführt, es gibt keine Fehlermeldung. Wo ist das Problem?
Warum zitierst du jetzt nicht was ich bereits dazu geschrieben hatte?
Hab' ich doch.
Während hier bei jedem noch so kleinen HTML-Semantik-Problem gemeckert wird, meinst du wenn ein SQL-Query fehlerhaft ist, geht das in Ordnung, weil funktioniert ja?
Du erwartest also einen Syntaxfehler? Ja? Warum schreibst Du das nicht? *Ich* weiß nicht, was Du erwartest.
» »» Und warum der das ""main"."t1"" macht verstehe ich auch nicht Tabellenname sollte t1 sein.
»
» Was verstehst Du hieran genau nicht? Das doppelte Anführungszeichen sind ANSI-gerechte Quotes, d.h. damit werden Bezeichner gequotet - ....»»
»
» Ist Dir die Schreibweise
»
» datenbankname.tabellenname
»
» noch nicht über den Weg gelaufen?
Auch hier lässt du meine Begründung weg. Es geht nicht um die Quotes, sondern darum das meine DB gar nicht MAIN heisst.
Woher sollte ich das wissen? Steht nirgends. Außerdem: woher kommt diese Schreibweise? Weiß ich nicht. Woher auch? Ich habe keine Glaskugel.
Warum er dann, wenn er schon nicht nur meinen Tabellennamen alleine nimmt, das noch dazu macht ist fraglich.
Wer macht das? Wann? Wo?
» »» Dann sehe ich nirgendwo, vielleicht irre ich mich auch, eine Möglichkeit ein Feld auf UNIQUE zu setzen.
»
» Du irrst. Du kannst in der Spaltendefinition den entsprechenden Spaltenconstraint setzen, wie Dir das sehr nützliche Syntaxdiagramm der Spaltendefiniton, das Dir bereits verlinkt wurde, zeigt. Schaust Du Dir die Definition von column-constraint und conflict-clause an, so siehst Du, dass Du im einfachsten Fall einfach nur ein UNIQUE anhängen musst:
»
»b VARCHAR(20) UNIQUE
»Wovon reden wir jetzt von einem eigenen Query, den ich dort anbringen soll, oder die Funktionen des Teils zur Tabellen erstellung. Bei Letzterem finde ich keine Möglichkeit UNIQUE zu setzen, Du?
Warum schreibe ich Dir, wie es geht? Selbstredend weil es so geht, wie ich dies schreibe.
CREATE TABLE test (
b VARCHAR(20) UNIQUE
);
erstellt in der aktuellen Datenbank die Tabelle test mit der Spalte b. Diese Spalte ist mit einem UNIQUE-Index versehen. Beachte bitte, dass NULL-Werte in dieser Spalte als *unterschiedlich* gewertet werden - genauso wie es in der Dokumentation steht.
Habe ich doch alles schon ausführlich geschrieben.
Nein. Nicht. Es ist in Deinem Kopf - aber nicht hier.
Wie wärs wenn du mal konkret auf die von mir genannten Probleme eingehst? Besonders die Insert Funktionen der Tools in Kombi mit meinem UNIQUE Statement und/oder in Kombi mit AUTOINCREMENT Problematik.
Welches Problem hast Du mit AUTOINCREMENT?
Das da:
» » » Ein anderes Ding ist das Autoincrement Feld. Aber wohl eher ein Problem von Sqlite, denn wenn ich bei der Erstellung,
Die SQLite-Doku sagt wunderbar, wie Du in SQLite ein AUTOINCREMENT hinbekommst - und dass Du es prinzipiell gesehen überhaupt nicht brauchst.
» » » wie empfohlen, zu dem INTEGER auch noch, wie bei MYSQL gewohnt, eine Zahl eingeben also INTEGER(9) eingebe, dann wird das nix mit Autoincrement.
wo wird solcher Unsinn mit MySQL-proprietärem Kram empfohlen.
oder das da:
» » CREATE TABLE IF NOT EXISTS "main"."t1" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , "a" VARCHAR, "b" VARCHAR, "c" TEXT)
» » Was ist daran falsch? Es gibt keine AUTOINCREMENT Bezeichnung in Sqlite, nur weil Viele das meinen, hatte ich am Anfang meine grösste Mühe das zu verstehen.
Du irrst schon wieder. In SQLite gibt es das AUTOINCREMENT-Schlüsselwort.
Wiederum weiß ich nicht, was Du erwartest und was Du erhältst.
Freundliche Grüße
Vinzenz