forgein键的值为NULL

时间:2015-05-10 08:03:17

标签: mysql sql jdbc

我正在尝试设计我的数据库表以从route表中获取routes取决于骑手的位置以及时间必须达到当前时间。当我在所有表中插入一些数据时,我遇到问题,那么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')

1 个答案:

答案 0 :(得分:2)

请注意:外国参考文献不会自行插入任何内容。

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

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

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

更改插入语句应解决问题。