错误的SQL语法;靠近';的语法不正确';

错误的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

我正在使用连接到Azure SQL数据库的Microsoft SQL Server Management Studio;通常,我习惯于使用Oracle(我想这只是一个新手的错误)。我到底做错了什么?以下是我收到的错误消息:

味精102,第15级,状态1,第11行
“')附近的语法不正确

味精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的表,主键是脚本。谢谢,感谢您的帮助!