У меня есть таблица mysql с составным первичным ключом и дочерняя таблица, которая ссылается на первую с внешним ключом.
Каков правильный синтаксис для вставки строки дочерней таблицы?
Как обе части составного ключа задаются в операторе вставки?
У меня есть эти таблицы;
CREATE TABLE IF NOT EXISTS parent (
p_id INT NOT NULL,
p_org INT NOT NULL,
PRIMARY KEY(p_id, p_org),
p_name VARCHAR(12))
ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS child (
c_id INT NOT NULL PRIMARY KEY,
c_org INT NOT NULL,
c_p_id INT NOT NULL, FOREIGN KEY(c_p_id, c_org) REFERENCES parent(p_id, p_org),
c_info VARCHAR(12))
ENGINE=InnoDB;
После вставки двух строк в родительский;
insert into parent values(100, 1, 'name-1'), (100, 2, 'name-2');
Я хочу вставить строку в дочерний элемент.
insert into child values(1000, 2, 100, 'info-for-2');
но я не знаю, как указать составной ключ.Вместо 100 я хотел бы указать (100 и 2), чтобы моя дочерняя строка ссылалась только на родителя с (100 2).
С приведенным выше оператором вставки мой запрос возвращаетдве строки вместо одной;
select * from parent join child on c_p_id = p_id;
возвращает;
p_id p_org p_name c_id c_org c_p_id c_info
100 1 name-1 1000 2 100 info-for-2
100 2 name-2 1000 2 100 info-for-2
, но я хотел бы получить только строку с (100 2).
Буду ли я на самом деле иметьуказать c_org в соединении?