【发布时间】:2018-06-14 13:08:01
【问题描述】:
如果我在数据库中有两个表
table1
id_app | description
id_app 是 table1 的主键
table2
id_person | name | id_app
(id_person, id_app) 是table2的主键
如果我执行这个:
this.stat = conn.createStatement();
String sql = "INSERT INTO `table2` (id_person,name,aplication) VALUES (\""+id_person+"\", \""+name+"\", \""+aplication+"\")";
stat.executeUpdate(sql);
我可以插入一个未在 table1 中定义的应用程序的人,这可能吗?或者我在我的数据库中定义了错误? 我可以在我的 java 程序中限制它,但我想知道是否有办法从数据库中限制它?
我的数据库定义看起来像这样
CREATE TABLE `table1` (
`id_app` TEXT NOT NULL UNIQUE,
`description` TEXT NOT NULL UNIQUE,
PRIMARY KEY(`id_app`)
);
CREATE TABLE `table2` (
`id_person` TEXT NOT NULL UNIQUE,
`aplication` TEXT NOT NULL,
FOREIGN KEY(`aplication`) REFERENCES `table1`(`id_app`),
PRIMARY KEY(`id_person`,`aplication`)
);
【问题讨论】: