mysql外键插入

时间:2014-02-26 08:39:06

标签: mysql key

使用这两个表我正在尝试创建一个插入新课程的查询,但我使用的是外键,我不知道如何将那些用户(表)id传递给课程(表)id

我正试图得到这样的东西

关于如何将数据插入包含外键的表,我完全迷失了, 我想做的是:

  1. 首先一个人可以注册(用户表)
  2. 2.然后用户可以添加课程(我使用外键来识别特定用户的课程)

    用户表

    id | username |
    ---------------
    1  | test     |
    

    课程表

    coursesid | coursesname | id(same id that in users table)
    
    1         | courses test| 1
    

    Create Table命令是

    CREATE TABLE `users` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `username` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
      `password` char(64) COLLATE utf8_unicode_ci NOT NULL,
      `salt` char(16) COLLATE utf8_unicode_ci NOT NULL, 
      PRIMARY KEY (`id`),
      UNIQUE KEY `username` (`username`) 
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
    
    
    
    CREATE TABLE `course` (
      `courseid` int(11) NOT NULL AUTO_INCREMENT,
      `coursename` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
      `id` int(11) NOT NULL,
      UNIQUE KEY (`courseid`)
    FOREIGN KEY (od) REFERENCES users(id)
    ) 
    

1 个答案:

答案 0 :(得分:1)

您可以使用子查询来查找用户ID,例如:

insert into course
(courseid, coursename, id)
values
(1, 'test courses',
    (SELECT id FROM users where username = 'test')
)
;

原因是,如果您知道用户ID,则可以直接插入此ID:

insert into course
(courseid, coursename, id)
values
(1, 'test courses', 1)
;

仅插入最后一个用户ID的附加查询:

insert into course
(courseid, coursename, id)
values
(1, 'test courses',
    (SELECT max(id) FROM users)
)
;