【393天】我爱刷题系列152(2018.03.05)

@(一只心中无码的程序员)专栏html

叨叨两句

  1. ~

SQL习题047

题目描述
在audit表上建立外键约束,其emp_no对应employees_test表的主键id。
CREATE TABLE employees_test(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);程序员

CREATE TABLE audit(
EMP_no INT NOT NULL,
create_date datetime NOT NULL
);sql

本题‘OJ系统太死板,只注重代码形式,不注重代码意义,连代码前缩进四个空格,KEY和(EMP_no)之间除去空格等都规定死了,多是因为OJ系统没法从意义上判断EMP_no是否设置为了 employees_test(ID)的外键所致。
因为SQLite中不能经过 ALTER TABLE ... ADD FOREIGN KEY ... REFERENCES ... 语句来对已建立好的字段建立外键,所以只能先删除表,再从新建表的过程当中建立外键。可参考:
http://www.sqlite.org/foreignkeys.html
https://zhidao.baidu.com/question/350164703.html

DROP TABLE audit;
CREATE TABLE audit(
    EMP_no INT NOT NULL,
    create_date datetime NOT NULL,
    FOREIGN KEY(EMP_no) REFERENCES employees_test(ID));
SQLite中设置外键还能够用如下方法:

DROP TABLE audit;
CREATE TABLE audit(
    EMP_no INT NOT NULL REFERENCES employees_test(ID),
    create_date datetime NOT NULL);