【发布时间】:2011-11-14 12:44:55
【问题描述】:
我正在通过命令行和/或mysql> 提示符执行以下所有操作。
我是数据库新手,注意到有很多关于结构(教程)和定义(手册)的网站,但没有关于实际示例的网站。如果我有两张这样的桌子
CREATE TABLE IF NOT EXISTS owner
(
ID INT NOT NULL AUTO_INCREMENT,
name VARCHAR(32) NOT NULL UNIQUE,
PRIMARY KEY(ID)
)ENGINE=InnoDB
CREATE TABLE IF NOT EXISTS dog
(
ID INT NOT NULL AUTO_INCREMENT,
owner INT NOT NULL,
name VARCHAR(32) NOT NULL UNIQUE,
PRIMARY KEY(ID),
FOREIGN KEY (owner) REFERENCES owner(ID)
)ENGINE=InnoDB
如果我想添加到餐桌狗
INSERT INTO dog (owner, name) VALUES(get_owner_ID("Peter Griffin"), "Brian Griffin");
如何从名称(“Peter Griffin”)中获取神秘的所有者 ID
【问题讨论】:
-
在执行
insert之前,您必须先以某种方式为Peter 提供selectid(取决于您的业务逻辑)。 -
@kan 那是我迷路的地方。如果我这样做
select ID from owner where name = "Peter Griffin"它返回一个表,而不是一个 int。你如何获得单一价值,我在哪里“存储”它?我会用它作为复合语句吗 -
只需执行两个单独的查询 - 选择然后插入。并检查是否只返回一条记录(这意味着只有一条记录的 name = 'Peter')。
标签: mysql foreign-keys innodb