mysql - 外键的值为 NULL

标签 mysql sql jdbc

我正在尝试设计我的数据库表以从 routes 表中获取 route 取决于骑手的位置和时间必须到达当前时间。当我在所有表中插入一些数据然后 routesarrivalestimes 表中的 stop_id 为 NULL 时,我遇到了问题?数据库设计有问题吗?

一站多路。一条路线有很多站点。一站有多个到达时间。

感谢任何帮助。

  CREATE TABLE IF NOT EXISTS stops
    (stop_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
     name varchar(30) NOT NULL, 
     lat double(10,6) NOT NULL, 
     longi double(10,6)NOT NULL) 

  INSERT INTO stops(name,  lat, longi) values
      ('ABC', '63.838039', '18.700440' ),
      ('DEF', '63.840642', '18.701246' ),             
      ('HIG', '63.868863', '18.665438' )

   CREATE TABLE IF NOT EXISTS arrivaltimes(arrivaltimes_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
      weekday VARCHAR(20) NOT NULL,
      arrivaltime time NOT NULL,
      stop_id INT, FOREIGN KEY fk_stop_id(stop_id) REFERENCES stops(stop_id) )

   INSERT INTO arrivaltimes(weekday, arrivaltime) values
       ('mon-fri', '05:30' ),
       ('mon-fri', '06:07' )

  CREATE TABLE IF NOT EXISTS routes
    (routes_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
     route INT(11) NOT NULL, 
     stop_id INT, FOREIGN KEY fk_stop_id(stop_id) REFERENCES stops(stop_id) )

  INSERT INTO routes(route) values
     ('1'),
     ('9')

最佳答案

请注意:FOREIGN KEY REFERENCES 不会自行插入任何内容。

  • 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。

  • FOREIGN KEY 约束可防止将无效数据插入外键列,因为它必须是它指向的表中包含的值之一。

结果中显示的内容是正确的。在将记录插入路线和到达时间表时,您没有为 stop_id 传递任何值。

更改您的插入语句应该可以解决问题。

关于mysql - 外键的值为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30149104/

相关文章:

javascript - jquery如何减去元素

mysql - 在多个表中截断

mysql - 无法将mysql数据导入elasticsearch

java - 为什么以函数作为参数时 jdbi 绑定(bind)失败

java - JDBC-接口(interface)的实现

mysql - 如何在 MySQL Workbench 中重置 root 用户的密码

PHP SQL 查询不返回与 phpMyAdmin 中相同的行

Java:如何有效地从数据库中读取?

mysql - 如果不存在,则插入新行,具体取决于同一表的其他行中的列值

sql - 使用 select 语句中的值将多行插入到某个表中