【问题标题】:Column exist but program don t see? [duplicate]列存在但程序看不到? [复制]
【发布时间】:2021-08-15 17:51:58
【问题描述】:

我创建了 3 个表,但在最后一个显示错误

    CREATE TABLE Student
(
    St_Id char(7) PRIMARY KEY,
    St_Fname varchar(15) NOT NULL,
    St_Lname varchar(20) NOT NULL,
    St_DOB date
)



   CREATE TABLE Course
(
    Course_code char(5) PRIMARY KEY,
    Course_title varchar(30) NOT NULL,
    Course_credit INTEGER NOT NULL
)


CREATE TABLE Registration 
(
    Reg_no INTEGER  PRIMARY KEY AUTOINCREMENT ,
    FOREIGN KEY (St_Id) REFERENCES Student(St_Id),
    FOREIGN KEY (Course_code) REFERENCES Course(Course_code),
    Mark_obtaines INTEGER
)

错误是

执行完成但出现错误。结果:未知列“St_Id”在 外键定义在第 1 行:CREATE TABLE 注册(Reg_no INTEGER PRIMARY KEY AUTOINCREMENT , FOREIGN KEY (St_Id) REFERENCES 学生(St_Id),

【问题讨论】:

    标签: sql sqlite


    【解决方案1】:

    为了定义外键,需要先定义列——并且类型需要与被引用表中的类型相匹配:

    CREATE TABLE Registration  (
        Reg_no INTEGER PRIMARY KEY AUTOINCREMENT,
        St_Id CHAR(7),
        Course_Code CHAR(5),
        FOREIGN KEY (St_Id) REFERENCES Student(St_Id),
        FOREIGN KEY (Course_code) REFERENCES Course(Course_code),
        Mark_obtaines INTEGER
    );
    

    然后FOREIGN KEY 声明提供有关该列的更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 2020-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多