1

私は3つのテーブルを持っています

create table movies(
     movie_id int PRIMARY KEY AUTO_INCREMENT,
     budget decimal(10,3) NOT NULL,
     name varchar(20) NOT NULL);

create table actor(
     actor_id int primary key auto_increment,
     name varchar(13) not null,
     salary decimal(12,2) not null);

create table movie_actor( movie_id int not null references movies (movie_id),
                          actor_id int not null references actor (actor_id), 
                          constraint movie_actor_pk primary key (movie_id,actor_id)) 

.I はそれらにデータを挿入しました。

mysql> select * from movies;
+----------+----------+------------+
| movie_id | budget   | name       |
+----------+----------+------------+
|        1 | 1000.000 | rambo      |
|        2 | 2000.000 | rocky      |
|        3 | 8000.000 | terminator |
+----------+----------+------------+
3 rows in set (0.00 sec)

mysql> select * from actor;
+----------+-----------+--------+
| actor_id | name      | salary |
+----------+-----------+--------+
|      100 | sylvester | 100.00 |
|      101 | arnold    |  90.00 |
+----------+-----------+--------+
2 rows in set (0.00 sec)

mysql> select * from movie_actor;
+----------+----------+
| movie_id | actor_id |
+----------+----------+
|        1 |      100 |
|        2 |      100 |
|        3 |      101 |
|       39 |    10109 |
+----------+----------+
4 rows in set (0.00 sec)

その InnoDB エンジン 私の質問は、movie_actor テーブルの movie_id 39 は、REFERENTIAL INTEGRITY に従って、movie_actor テーブルに挿入することを許可されるべきではありませんか?

4

1 に答える 1

3

参照整合性を持たせるには、外部キー制約を設定する必要があります。

create table movie_actor( 
    movie_id int not null references movies (movie_id),
    actor_id int not null references actor (actor_id), 
    constraint movie_actor_pk primary key (movie_id,actor_id),
    constraint foreign key (movie_id) references movies (movie_id),
    constraint foreign key (actor_id) references actor (actor_id)
    )
于 2012-10-11T12:02:01.600 に答える