【问题标题】:Error while trying to add multiple foreign keys to single table尝试将多个外键添加到单个表时出错
【发布时间】:2022-01-21 05:11:38
【问题描述】:

我正在尝试创建一个子表,该表约束来自父级的 3 个外键,但我收到错误 1215:无法添加外键约束

父表:

    CREATE TABLE `Availability` (
   `time_of_day` varchar(20) NOT NULL,
   `day_of_week` varchar(20) NOT NULL,
   `email` varchar(60) NOT NULL,
   PRIMARY KEY (`time_of_day`,`day_of_week`,`email`),
   KEY `email` (`email`),
   CONSTRAINT `Availability_ibfk_1` FOREIGN KEY (`email`) REFERENCES `service_provider` (`email_service_provider`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8

子表(由于上述错误,我无法构建):

CREATE TABLE TEST1
(
  num_request INT NOT NULL,
  time_of_day VARCHAR(20) NOT NULL,
  day_of_week VARCHAR(20) NOT NULL,
  email VARCHAR(60) NOT NULL,
    PRIMARY KEY (num_request),
    Foreign key (time_of_day) references Availability(time_of_day),
    Foreign key (day_of_week) references Availability(day_of_week),
    Foreign key (email) references Availability(email)
  );

请告诉我我做错了什么...谢谢大家。

【问题讨论】:

    标签: mysql foreign-keys constraints


    【解决方案1】:

    当您为具有复合主键(即多列的键)的表创建外键时,您也应该使外键复合。

    CREATE TABLE TEST1
    (
      num_request INT NOT NULL,
      time_of_day VARCHAR(20) NOT NULL,
      day_of_week VARCHAR(20) NOT NULL,
      email VARCHAR(60) NOT NULL,
        PRIMARY KEY (num_request),
        Foreign key (time_of_day, day_of_week, email) references Availability(time_of_day, day_of_week, email)
    )
    

    您尝试创建三个单独的约束。

    【讨论】:

    • 谢谢比尔!不幸的是,出现了一个新问题..写在下面..
    【解决方案2】:

    虽然现在我有一个新问题,尝试向上面的子表添加一行,但我收到错误 1452:无法添加或更新子行。

    这是我在父表中的行:

    time_of_day | day_of_week |电子邮件

    '晚上''星期一''elinor@gmail.com'

    但在尝试向 TEST1(子表)添加行时,我收到错误 1452 - 无法添加或更新子行

    insert into TEST1 (num_request, time_of_day, day_of_week, email)
    Values (1, 'Evening', 'monday', 'elinor@gmail.com')
    

    我看不出我错过了什么, 我在父表中确实有这些行,输入的类型是一样的...

    【讨论】:

    • 您必须有一行包含三个值在同一行上。 SELECT * FROM Availability WHERE (time_of_day, day_of_week, email) = ('Evening', 'monday', 'elinor@gmail.com')。我会说你没有这样的行。
    • 是的,我知道我在哪里弄错了表格......谢谢一百万!
    猜你喜欢
    • 2014-10-16
    • 2020-12-21
    • 1970-01-01
    • 2013-11-16
    • 2011-07-22
    • 2011-06-01
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    相关资源
    最近更新 更多