【发布时间】:2022-01-12 04:58:08
【问题描述】:
我有 2 个具有相同列名和相同数据类型的表
jobs.jobs_id 和 job_history.job_id。
这是 SQL 代码:
CREATE TABLE jobs
(
job_id varchar(10) PRIMARY KEY,
job_title VARCHAR (35) NOT NULL,
min_salary DECIMAL (8, 2) DEFAULT NULL,
max_salary DECIMAL (8, 2) DEFAULT NULL
);
CREATE TABLE job_history
(
employee_id int not null,
start_date date not null,
end_date date not null,
job_id varchar(10),
department_id int not null,
FOREIGN KEY (employee_id) REFERENCES employees (employee_id)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (job_id) REFERENCES jobs (job_id),
FOREIGN KEY (department_id) REFERENCES departments (department_id)
);
如上所示,它们都具有相同的数据类型。
当我运行第一个表代码时,它运行时没有任何错误。当我运行 job_history 表时,我得到一个错误
列“jobs.job_id”与在外键“FK__job_histo__job_i__34E8D562”中引用列“job_history.job_id”的数据类型不同。
消息 1750,第 16 级,状态 0,第 1 行
无法创建约束。查看以前的错误。
除此之外,代码中没有以前的错误。那我错过了什么?
【问题讨论】:
-
列排序规则不同吗?
-
您的 DML 没问题。请仔细检查该列定义是否与您在此处描述的一样
-
没有相同的列排序规则。我刚刚检查过。
-
您数据库中的
job表必须与您在此处发布的 DML 不同(sp_help 表进行验证)。尝试删除并重新创建job表 -
我是 SQL 新手,只是在练习。所以我删除了数据库并将相同的代码复制粘贴到一个新数据库中。现在可以了。不过我没听懂你说的。
标签: sql sql-server tsql sqldatatypes