2016-04-04 20 views
0

Ich benutze SQLite DB Browser v3.7.0. Wenn ich eine Tabelle mit folgenden Syntax zu erstellen:SQLite Check Constraints und SQLite DB Browser

CREATE TABLE "A" (
    "AREA" TEXT NOT NULL DEFAULT 'DEFAULT' 
     CONSTRAINT "A-AREA-MAX_LENGTH_CHECK" 
      CHECK(LENGTH("AREA") <= 25), 
    CONSTRAINT "A-AREA-UPPERCASE_NO_WHITESPACE_CHECK" 
     CHECK(UPPER("AREA") = "AREA" AND INSTR("AREA", ' ') = 0) 
); 

Als ich in dem „Daten durchsuchen“ Registerkarte SQLite Browser gehen, bekomme ich keine Spalten zeigen sich (als ob der Browser nicht in der Lage ist, die SQL zu analysieren). Dies ist ein Problem, da, wenn ich auf "Neuer Datensatz" klicke, bekomme ich die Ausnahme "Fehler beim Hinzufügen von Datensatz: in der Nähe von ") ": Syntaxfehler (INSERT INTO '' VALUES();)".

SQLite DB Browser 3.7.0 Error

Wenn ich jedoch die Einschränkung ändern entweder von sein:

CHECK(UPPER("AREA") = "AREA") 
CHECK(INSTR("AREA", ' ') = 0) 

Dann SQLite DB Browser erscheint alles richtig zu analysieren. Meine Frage ist, ist die Syntax oben ungültige SQLite, oder ist das ein Problem, das an das SQLite DB Browser-Team gemeldet werden muss? Vielen Dank.

EDIT

ich auch in SQLite DB Browser v3.8.0 getestet, mit ähnlichen Ergebnissen:

SQLite DB Browser 3.8.0 Error

Antwort

1

Das ist ein Fehler mit der Schnittstelle ist. Ausführen von Code in SQLite-Version 3.8.2 generiert die Tabelle richtig

sqlite> CREATE TABLE "A" (
    "AREA" TEXT NOT NULL DEFAULT 'DEFAULT' 
     CONSTRAINT "A-AREA-MAX_LENGTH_CHECK" 
      CHECK(LENGTH("AREA") <= 25), 
    CONSTRAINT "A-AREA-UPPERCASE_NO_WHITESPACE_CHECK" 
     CHECK(UPPER("AREA") = "AREA" AND INSTR("AREA", ' ') = 0) 
); 

sqlite> .schema A 
CREATE TABLE "A" (
    "AREA" TEXT NOT NULL DEFAULT 'DEFAULT' 
     CONSTRAINT "A-AREA-MAX_LENGTH_CHECK" 
      CHECK(LENGTH("AREA") <= 25), 
    CONSTRAINT "A-AREA-UPPERCASE_NO_WHITESPACE_CHECK" 
     CHECK(UPPER("AREA") = "AREA" AND INSTR("AREA", ' ') = 0) 
); 

Edit: die Einschränkungen auch wie vorgesehen:

sqlite> insert into A values ("area"); 
Error: CHECK constraint failed: A-AREA-UPPERCASE_NO_WHITESPACE_CHECK 
sqlite> insert into A values ("AR EA"); 
Error: CHECK constraint failed: A-AREA-UPPERCASE_NO_WHITESPACE_CHECK 
sqlite> insert into A values ("AREA"); 
sqlite> select * from A; 
AREA