【问题标题】:"jobs.job_id" not same datatype as the referencing column "job_history.job_id" in SQL Server“jobs.job_id”与 SQL Server 中的引用列“job_history.job_id”的数据类型不同
【发布时间】:2022-01-12 04:58:08
【问题描述】:

我有 2 个具有相同列名和相同数据类型的表 jobs.jobs_idjob_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


【解决方案1】:

当我执行以下操作时,我没有收到任何错误:

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 employees 
(
    employee_id int PRIMARY KEY
);
CREATE TABLE departments
(
    department_id   int PRIMARY KEY
);

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)
);

【讨论】:

    猜你喜欢
    • 2018-01-12
    • 2018-07-20
    • 2015-06-25
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    相关资源
    最近更新 更多