0

尝试在 DB Browser 中为项目构建表,并且正在创建我的一个表而没有任何属性列,完全为空。

我通过试验确定,有问题的指令是外键分配之一(特别是EMPLOYEE.emp_years作为外键引用分配的一个RAISE.emp_years)。通过注释掉这一行,表格将完全构建,包含所有属性列。但我需要这条线。

CREATE TABLE PAYRATE (
rai_bump    DECIMAL (2, 2) NOT NULL,
bas_basepay DECIMAL (2, 2) NOT NULL,
pay_rate    DECIMAL (2, 2) NOT NULL,
PRIMARY KEY(rai_bump, bas_basepay)
);

CREATE TABLE BASEPAY (
emp_agerange    CHAR(20) NOT NULL,
bas_basepay     DECIMAL (2, 2) NOT NULL,
PRIMARY KEY(emp_agerange),
FOREIGN KEY(bas_basepay) REFERENCES PAYRATE(bas_basepay)
);


CREATE TABLE RAISE (
emp_years   INTEGER NOT NULL,
rai_bump    DECIMAL (2, 2) NOT NULL,
PRIMARY KEY(emp_years),
FOREIGN KEY(rai_bump) REFERENCES PAYRATE(rai_bump)
);

CREATE TABLE EMPLOYEE (
emp_num         INTEGER NOT NULL,
emp_fname       VARCHAR(20) NOT NULL,
emp_lname       VARCHAR(20) NOT NULL,
emp_years       INTEGER NOT NULL,
emp_agerange    CHAR(20) NOT NULL,
PRIMARY KEY(emp_num),
FOREIGN KEY(emp_years) REFERENCES RAISE(emp_years), /* <-- offender */
FOREIGN KEY(emp_agerange) REFERENCES BASEPAY(emp_agerange)
);

Employee 表应该有 5 个属性,emp_num, emp_fname, emp_lname, emp_years, 和emp_agerange。当我在没有上面有问题的行的情况下运行我的代码时,这就是我得到的,但是使用该行,创建了员工表但根本没有列。我没有收到错误消息。它说它在有和没有违规线路的情况下都能成功运行。

4

1 回答 1

3

我找到了原因。在故障排除时遇到问题后,每当我参考 RAISE 表时都会出错,我得到了语法错误。我得到了一个暗示,并查了这个词。果然,如果是 SQLite 中的保留字,则 RAISE。它让我创建一个具有名称的表,但不允许我引用它,因为它认为我正在引用 RAISE 函数。

于 2019-11-03T22:42:50.940 回答