oka*_*ami 22 mysql foreign-keys insert
我只有这两个表:
TAB_TEACHER
- id_teacher // primary key, autoincrement
- name_teacher // a varchar
TAB_STUDENT
- id_student // primary key, autoincrement
- name_student // a varchar
- id_teacher_fk // foreign key reference to a teacher (TAB_TEACHER)
Run Code Online (Sandbox Code Playgroud)
我想知道如何插入这两种情况:
案例1 - 使用预先存在的教师插入新学生,因此我必须使用教师姓名获取外键
案例2 - 使用新教师插入新学生(我正在创建学生的同时创建的老师)
Imr*_*e L 22
http://dev.mysql.com/doc/refman/5.0/en/insert-select.html
对于case1:
INSERT INTO TAB_STUDENT(name_student, id_teacher_fk)
SELECT 'Joe The Student', id_teacher
FROM TAB_TEACHER
WHERE name_teacher = 'Professor Jack'
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
对于case2,您只需要执行2个单独的插入语句
Wil*_*ken 18
这是我使用的替代语法:
INSERT INTO tab_student
SET name_student = 'Bobby Tables',
id_teacher_fk = (
SELECT id_teacher
FROM tab_teacher
WHERE name_teacher = 'Dr. Smith')
Run Code Online (Sandbox Code Playgroud)
我在Excel中执行此操作以将数据透视表导入到维度表和SQL中的事实表,以便您可以从以下内容导入到bost department和expenses表:
幸运的是,MySQL LAST_INSERT_ID()完全支持此目的.
INSERT INTO tab_teacher
SET name_teacher = 'Dr. Smith';
INSERT INTO tab_student
SET name_student = 'Bobby Tables',
id_teacher_fk = LAST_INSERT_ID()
Run Code Online (Sandbox Code Playgroud)
小智 8
INSERT INTO tab_student (name_student, id_teacher_fk)
VALUES ('dan red',
(SELECT id_teacher FROM tab_teacher WHERE name_teacher ='jason bourne')
Run Code Online (Sandbox Code Playgroud)
建议以小写形式存储您的值,以使检索更容易且不易出错
INSERT INTO tab_teacher (name_teacher)
VALUES ('tom stills')
INSERT INTO tab_student (name_student, id_teacher_fk)
VALUES ('rich man', LAST_INSERT_ID())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100531 次 |
| 最近记录: |