【问题标题】:Error creating foreign key on <table>(check data types)在 <table> 上创建外键时出错(检查数据类型)
【发布时间】:2021-03-25 16:17:23
【问题描述】:

在 local_fees 上创建外键时出错(检查数据类型)
I already check my datatypes in both table manage_fees and fees table

  • 已经将fees pk 设置为与manage_fee 相同的未编组,我仍然收到有关数据类型的错误消息

  • 每当我设置on delete null时我得到的错误

ALTER TABLE manage_fees ADD CONSTRAINT fk_fees FOREIGN KEY (local_fees) REFERENCES fees(id) ON DELETE SET NULL ON UPDATE RESTRICT;

  • 除此之外,每当我设置删除限制时,它都可以正常工作而不会显示错误消息。

ALTER TABLE manage_fees ADD CONSTRAINT fk_fees FOREIGN KEY (local_fees) 引用 fees(id) ON DELETE RESTRICT ON UPDATE RESTRICT;

谁能帮我解决我的问题?

【问题讨论】:

  • local_fees 可以为空吗?你能发布两个表的描述吗?
  • pastebin.com/KjHMSHks 这是我的桌子

标签: sql database


【解决方案1】:

您不能为 local_fees 应用 ON DELETE SET NULL,因为它不是 NULLABLE。 如果需要将其默认为 NULL,则应使其可为空:

CREATE TABLE `manage_fees` (
  `id` int(11) NOT NULL,
  `school_year` varchar(255) NOT NULL,
  `year_lvl` varchar(255) NOT NULL,
  `course` varchar(255) NOT NULL,
  `semester` varchar(255) NOT NULL,
  `local_fees` int(11) NULL,
  `time_created` datetime NOT NULL DEFAULT current_timestamp()
)

【讨论】:

  • 哦,天哪,我认为这根本不重要,因为它一直说检查数据类型,但现在它已经有意义了。
  • 当您想在父表中删除某些内容时,也可以使用ON DELETE SET NULL 吗?
  • 这真的取决于您的业务案例。从数据完整性的角度来看,这很好。从业务的角度来看,我不能说不了解您的目标。
猜你喜欢
  • 2017-10-20
  • 2020-05-10
  • 1970-01-01
  • 1970-01-01
  • 2016-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多