我正在尝试在SQL中创建表并不断出现错误

我正在使用Teradata SQL助手来创建表。我使用的代码如下:

CREATE TABLE calendar
( 
     CalendarKey INT NOT NULL,FullDate DATE NOT NULL,DayOfWeek VARCHAR(20) NOT NULL,DayOfMonth INT NOT NULL,Month VARCHAR(20) NOT NULL,Qtr VARCHAR(2) NOT NULL,Year VARCHAR(4) NOT NULL

     PRIMARY KEY (CalendarKey)
);

当我尝试执行命令时收到此错误:

  

[Teradata数据库] [3707]语法错误,预期类似于在','和'Month'关键字之间的'CHECK'关键字。

有人知道这个问题是什么吗?

ahricher1 回答:我正在尝试在SQL中创建表并不断出现错误

正如错误所暗示的那样,month(和year也是Teradata中的保留关键字,不能用作列名。

您可以将其双引号(但随后在每个查询中也必须双引号)或更改名称。还有一个问题,primary key约束前缺少逗号:

CREATE TABLE calendar
( 
     CalendarKey INT NOT NULL,FullDate DATE NOT NULL,DayOfWeek VARCHAR(20) NOT NULL,DayOfMonth INT NOT NULL,"Month" VARCHAR(20) NOT NULL,Qtr VARCHAR(2) NOT NULL,"Year" VARCHAR(4) NOT NULL,PRIMARY KEY (CalendarKey)
);
,

尝试这种方式

#include <bits/stdc++.h>

CREATE TABLE calendar (
  CalendarKey INT NOT NULL,Month VARCHAR(20) NOT NULL,Year VARCHAR(4) NOT NULL
)
,

尝试此操作,以将带有PK的表作为表定义的一部分

CREATE TABLE calendar
( 
     CalendarKey INT PRIMARY KEY NOT NULL,[DayOfWeek] VARCHAR(20) NOT NULL,[DayOfMonth] INT NOT NULL,[Month] VARCHAR(20) NOT NULL,[Year] VARCHAR(4) NOT NULL
); 

或者具有主键PK和标识[自动计数器]

CREATE TABLE calendar
( 
     CalendarKey INT PRIMARY KEY Identity(1,1) NOT NULL,[Year] VARCHAR(4) NOT NULL
);

-注意,如果col名称是保留关键字(例如[year]

),建议使用prackets []
本文链接:https://www.f2er.com/3141619.html

大家都在问