2014-02-26 123 views
1

使用這兩個表我試圖創建一個查詢來插入一個新的課程,但我使用外鍵,我不知道如何將用戶(表)ID傳遞到課程(表格)ID。mysql外鍵插入

我試圖讓這樣的事情

我完全失去了,如何將數據插入包含外鍵的表, 我想要做的是:

  1. 第一個人可以註冊(用戶表)

2.然後用戶將可以添加課程(使用外鍵IM識別特定用戶的課程)

用戶表

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

課程表

coursesid | coursesname | id(same id that in users table) 

1   | courses test| 1 

創建表的命令是

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) 
) 
+0

將數據插入到用戶,然後當然,最好在同一筆交易中。 –

+0

我不能同時做,因爲用戶可以根據自己的意願添加儘可能多的課程 – user3214262

+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) 
) 
; 
+0

謝謝你,熟練使用子查詢! (): – user3214262

+0

「INSERT INTO courses(courseid,coursename,id)VALUES(:courseid,:coursename,(SELECT id from users where username =(select username from users))」; 假設我不知道用戶名i想要查詢以識別用戶名,任何想法爲什麼不起作用 – user3214262

+0

但是,在課程創建期間您對用戶有什麼瞭解?是否要插入任何用戶,例如上次存儲的用戶?您的系統是否保留記錄的用戶名? – AppLend