2017-11-15 1 views
2

Ich habe die Tabelle "User"Warum sagt SQL Server, dass das falsch ist?

id   int 
username varchar(40) 
joindate date 
email  varchar(60) 
password nvarchar(100) 

Ich möchte

die folgende Abfrage ausführen
INSERT INTO User (username, joinDate, email, password) 
VALUES ('Kristian', '15/11/2017', '[email protected]', 'password') 

SQL Server 2014 wirft einen Fehler

falsche Syntax nahe Stichwort 'User'

Was mache ich falsch ?

+3

'user' ist ein reserviertes Wort (https://docs.microsoft.com/en-us/sql/t- sql/language-elements/reservierte-Schlüsselwörter-transact-sql). Ändern Sie den Namen der Tabelle, damit Sie keine Konflikte haben. Ich stimme für die Schließung solcher Fragen als typografischer Fehler. –

+1

Ich stimme @GordonLinoff zu –

+0

Sie sollten ** im Allgemeinen versuchen, [SQL Server reservierte Schlüsselwörter] zu vermeiden (https://docs.microsoft.com/en-us/sql/t-sql/language-elements/reserved- keywords-transact-sql) als eigene Kennungen - verwenden Sie aussagekräftigere ** Namen für Ihre Tabellen, z 'MySystemUser' statt nur' User' .... –

Antwort

5

"Benutzer" ist ein reserviertes Wort und muss daher in eckige Klammern eingeschlossen werden.

INSERT INTO [User] (username, joinDate, email, password) 
VALUES ('Kristian', '15/11/2017', '[email protected]', 'password') 

Als eher spitz stark in den Kommentaren, wäre der Name der Tabelle ändert die bevorzugte Vorgehensweise sein, wenn Sie in der Lage sind, so zu tun.

+1

. . Sehr schlechter Rat. Das OP sollte den Namen der Tabelle ändern, damit es keinen Konflikt gibt. –

1

Sie den Fehler bekommen, weil der folgenden

  1. User (sowie Password) ist ein System definiert Schlüsselwort. Wenn Sie sie für Tabellen- oder Spaltennamen verwenden - was nicht empfohlen wird - sollten Sie sie in eckigen Klammern angeben.

  2. Sie geben die Datumszeit als TT/MM/JJJJ-Format an. Ändern Sie das in MM/TT/JJJJ.

ich die Abfrage, wie unten verändert und es funktioniert für mich

INSERT INTO [User] (username, joinDate, email, [password]) 
VALUES ('Kristian', '11/15/2017', '[email protected]', 'password') 
+2

Ich habe festgestellt, dass wenn Sie Datumsangaben als Zeichenfolgen in SQL verwenden möchten, ist es immer besser, YYYY/MM/DD zu verwenden, da abhängig von regionalen Einstellungen, entweder DD/MM/YYYY oder MM/DD/YYYY sein kann , aber SQL ist konsistent mit dem Format YYYY/MM/DD. Eine andere Möglichkeit ist die Verwendung von DD MMM YYYY, die niemals mit einem anderen Datumsformat verwechselt werden kann – Jaques

Verwandte Themen