错误的SQL语法;靠近';的语法不正确';
我正在使用连接到Azure SQL数据库的Microsoft SQL Server Management Studio;通常,我习惯于使用Oracle(我想这只是一个新手的错误)。我到底做错了什么?以下是我收到的错误消息: 味精102,第15级,状态1,第11行错误的SQL语法;靠近';的语法不正确';,sql,azure-sql-database,Sql,Azure Sql Database,我正在使用连接到Azure SQL数据库的Microsoft SQL Server Management Studio;通常,我习惯于使用Oracle(我想这只是一个新手的错误)。我到底做错了什么?以下是我收到的错误消息: 味精102,第15级,状态1,第11行 “')附近的语法不正确 味精102,第15级,状态1,第42行 “')附近的语法不正确 味精102,第15级,状态1,第54行 “')附近的语法不正确 味精102,第15级,状态1,第66行 “')附近的语法不正确 这是我的代码: CR
“')附近的语法不正确 味精102,第15级,状态1,第42行
“')附近的语法不正确 味精102,第15级,状态1,第54行
“')附近的语法不正确 味精102,第15级,状态1,第66行
“')附近的语法不正确 这是我的代码:
CREATE TABLE ElectiveCourses
(
ElectiveCourseID INT,
ElectiveCoursePrefix CHAR(5),
ElectiveCourseCode INT,
ElectiveCreditHours INT,
ElectiveCourseDescription VARCHAR(255),
CatalogYearID INT,
MajorID INT,
PRIMARY KEY (ElectiveCourseID),
FOREIGN KEY (CatalogYearID, MajorID)
);
CREATE TABLE Major
(
MajorID INT,
MajorTitle VARCHAR(50),
MajorCode INT,
MajorLevel CHAR(5),
MajorDescription VARCHAR(255),
PRIMARY KEY (MajorID)
);
CREATE TABLE CatalogYear
(
CatalogYearID INT,
CatalogYear VARCHAR(10),
CatalogYearStartTerm VARCHAR(10),
CatalogYearEndTerm VARCHAR(10),
PRIMARY KEY (CatalogYearID)
);
CREATE TABLE Student
(
StudentID INT,
FirstName CHAR(25),
LastName CHAR(10),
MajorID INT,
CatalogYearID INT,
PhoneNumber VARCHAR(15),
AreaCode INT,
Address VARCHAR(50),
State CHAR(50),
PRIMARY KEY (StudentID),
FOREIGN KEY (MajorID, CatalogYearID)
);
CREATE TABLE MajorCourses
(
MajorCourseID INT,
MajorCoursePrefix CHAR(5),
MajorCourseCode INT,
MajorCreditHours INT,
MajorCourseDescription VARCHAR(255),
CatalogYearID INT,
MajorID INT,
PRIMARY KEY (MajorCourseID),
FOREIGN KEY (CatalogYearID, MajorID)
);
CREATE TABLE Courses
(
CourseID INT,
CoursePrefix CHAR (5),
CourseCode INT,
CreditHours INT,
CourseDescription VARCHAR(255),
CatalogYearID INT,
MajorID INT,
PRIMARY KEY (CourseID),
FOREIGN KEY (CatalogYearID, MajorID)
);
这些外键引用的其他表/列是什么??你需要提供这些信息
CREATE TABLE ElectiveCourses
(
.... all the columns ......
PRIMARY KEY (ElectiveCourseID),
FOREIGN KEY (CatalogYearID, MajorID) **REFERENCES dbo.OtherTable(col1, col2)**
);
此外,这些引用必须与另一个表的完整的主键匹配-不能仅引用(复合)主键的部分。外键中列的名称、顺序和数据类型必须与被引用表的主键完全匹配
我在您的示例中没有发现任何其他表具有由(CatalogYearID,MajorID)
组成的主键,因此这里的引用(以及其他一些)非常不清楚
作为旁注:我强烈建议明确地命名您的约束:
CREATE TABLE dbo.ElectiveCourses
(
.... all the columns ......
CONSTRAINT PK_ElectiveCourses
PRIMARY KEY CLUSTERED (ElectiveCourseID),
CONSTRAINT FK_ElectiveCourses_OtherTable
FOREIGN KEY (CatalogYearID, MajorID)
REFERENCES dbo.OtherTable(col1, col2)
);
如果您需要禁用或删除这些约束,那么引用这些约束就容易多了。外键约束列缺少引用的表名。我不知道应该是什么表,因为您缺少一个主键为CatalogYearID的表,主键是脚本。谢谢,感谢您的帮助!