【问题标题】:Foreign Key SQL Server外键 SQL Server
【发布时间】:2011-05-08 13:56:57
【问题描述】:

我正在 sql server 2005 中创建一个学生数据库,但它给了我关于外键的错误,请检查其中的问题。

 CREATE TABLE STUDENT
(
STUDENT_REGNO  INT  NOT NULL PRIMARY KEY,
STUDENT_FIRSTNAME VARCHAR(30) NOT NULL,
STUDENT_LASTNAME VARCHAR(20) NOT NULL,
STUDENT_FATHER_NAME VARCHAR(30) NOT NULL,
STUDENT_EMAIL VARCHAR(20),
STUDENT_MOBILE_NO VARCHAR(15),
STUDENT_PHONE_NO VARCHAR(15),
STUDENT_ADDRESS VARCHAR (40),
DEPARTMENT_ID INT   CONSTRAINT DEP_1 FOREIGN KEY
 REFERENCES DEPARTMENT(DEPARTMENT_ID),
ACADEMIC_ID INT CONSTRAINT ACDEMIC FOREIGN KEY
REFERENCES ACADEMIC(ACADEMIC_ID),
CLASS_NAME VARCHAR(20) CONSTRAINT CLASS_1 FOREIGN KEY 
REFERENCES CLASS(CLASS_NAME)
)
CREATE TABLE FACULTY
(
FACULTY_ID INT  NOT NULL PRIMARY KEY,
FACULTY_NAME VARCHAR(20) NOT NULL,
FACULTY_FATHER_NAME VARCHAR(30) NOT NULL,
FACULTY_EMAIL VARCHAR(20),
FACULTY_ADDRESS VARCHAR(40) NOT NULL,
FACULTY_MOBILE_NO VARCHAR(30),
FACULTY_PHONE_NO VARCHAR(20),
FACULTY_QUALIFICATION VARCHAR(20),
DEPARTMENT_ID INT CONSTRAINT DEPARTEMNT_2 FOREIGN KEY 
REFERENCES DEPARTMENT(DEPARTMENT_ID),
ACADEMIC_ID INT CONSTRAINT ACADEMIC_1 FOREIGN KEY
REFERENCES ACADEMIC(ACADEMIC_ID)
)
CREATE TABLE USER1
(
USERNAME VARCHAR(20) NOT NULL,
USER_PASSWORD VARCHAR(6) NOT NULL,
USER_TYPE VARCHAR(20) NOT NULL,

)
CREATE TABLE DEPARTMENT
(
DEPARTMENT_ID int NOT NULL PRIMARY KEY,
DEPARTMENT_NAME VARCHAR(20) NOT NULL,
DEAPRTMENT_OFFICE_NO VARCHAR(20),
)
CREATE TABLE CLASS
(
CLASS_NAME VARCHAR(20) NOT NULL,
CLASS_STRENGTH INT NOT NULL,
)
CREATE TABLE ANNOUNCMENT
(
ANNOUNCMENT_ID int NOT NULL PRIMARY KEY,
ANNOUNCMENT_DESCRIPTION VARCHAR(50),
ANNOUNCMENT_TITLE VARCHAR(45)
)
CREATE TABLE FORUM
(
FORUM_ID int NOT NULL PRIMARY KEY,
FORUM_NAME VARCHAR(35) NOT NULL,
FORUM_DESCRIPTION VARCHAR(333),
FORUM_DISCUSSION VARCHAR(22),
POSTED_BY VARCHAR(34)
)
CREATE TABLE GRADE
(
LETTER_GRADE CHAR NOT NULL ,
PERCENTAGE FLOAT NOT NULL,
STUDENT_REGNO int CONSTRAINT STUDENT_5 FOREIGN KEY(STUDENT)
REFERENCES STUDENT(STUDENT_REGNO),
COURSE_ID int CONSTRAINT COURSE_1 FOREIGN KEY(COURSE)
REFERENCES COURSE(COURSE_ID)
)
CREATE TABLE COURSE
(
COURSE_NAME VARCHAR(20) NOT NULL,
COURSE_CREDIT_HR INT NOT NULL,
COURSE_DESCRIPTION VARCHAR(99),
)
CREATE TABLE TERM
(
TERM_START_DATE DATETIME NOT NULL,
TERM_END_DATE DATETIME NOT NULL,
student_regno int CONSTRAINT STUDENT_2 FOREIGN KEY(STUDENT)
REFERENCES STUDENT(STUDENT_REGNO)
)
CREATE TABLE PREVIOUS_ACADEMIC_INFO
(
ACADEMIC_ID int NOT NULL PRIMARY KEY,
DEGREE_DESCRIPTION VARCHAR(50),
CERTIFICATION VARCHAR(30),
DURATION DATETIME
)
CREATE TABLE TEACHER_COURSE
(
AREA_OF_SPECILIZATION VARCHAR(30),
faculty_id int CONSTRAINT FACULTY_1 FOREIGN KEY(FACULTY)
REFERENCES FACULTY(FACULTY_ID)
)

第一个错误是

消息 1769,第 16 级,状态 1,第 65 行
外键“STUDENT_5”引用 中的“学生”列无效 参考表“等级”。
消息 1750,第 16 级,状态 0,第 65 行
无法创建约束。查看以前的错误

【问题讨论】:

  • 错误详情会有所帮助。
  • 您希望人们阅读您的代码,但您没有发布错误?这怎么合理?
  • @Jay@Mitch Wheat :error提到.....告诉我外键是否被正确声明。

标签: database sql-server-2005 foreign-keys


【解决方案1】:
CREATE TABLE GRADE
(
LETTER_GRADE CHAR NOT NULL ,
PERCENTAGE FLOAT NOT NULL,
STUDENT_REGNO int CONSTRAINT STUDENT_5 FOREIGN KEY(STUDENT) REFERENCES STUDENT(STUDENT_REGNO),
COURSE_ID int CONSTRAINT COURSE_1 FOREIGN KEY(COURSE)
REFERENCES COURSE(COURSE_ID)
)

应该是

CREATE TABLE GRADE
(
LETTER_GRADE CHAR NOT NULL ,
PERCENTAGE FLOAT NOT NULL,
STUDENT_REGNO int CONSTRAINT STUDENT_5 FOREIGN KEY(STUDENT_REGNO) REFERENCES STUDENT(STUDENT_REGNO),
COURSE_ID int CONSTRAINT COURSE_1 FOREIGN KEY(COURSE_ID) REFERENCES COURSE(COURSE_ID)
)

等等。虽然这不是必需的,你可以这样做

CREATE TABLE GRADE
(
LETTER_GRADE CHAR NOT NULL ,
PERCENTAGE FLOAT NOT NULL,
STUDENT_REGNO int CONSTRAINT STUDENT_5 REFERENCES STUDENT(STUDENT_REGNO),
COURSE_ID int CONSTRAINT COURSE_1 REFERENCES COURSE(COURSE_ID)
)

【讨论】:

  • Msg 1767,级别 16,状态 0,行 1 外键“DEP_1”引用无效表“DEPARTMENT”。消息 1750,级别 16,状态 0,行 1 无法创建约束。查看以前的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-17
  • 2014-12-25
  • 1970-01-01
相关资源
最近更新 更多