Tôi có một bảng người. Mỗi người có tài sản và nhiều người có thể có một tài sản nhất định. Đây là mối quan hệ nhiều-nhiều. Đây là schema:MySQL - Cách chèn vào bảng có mối quan hệ nhiều-nhiều
CREATE TABLE persons (
person_id int(11) NOT NULL AUTO_INCREMENT,
firstname varchar(30) NOT NULL,
lastname varchar(30) NOT NULL,
PRIMARY KEY (person_id)
);
CREATE TABLE properties (
property_id int(11) NOT NULL AUTO_INCREMENT,
property varchar(254) NOT NULL UNIQUE,
PRIMARY KEY (property_id)
);
CREATE TABLE has_property (
person_id int(11) NOT NULL,
property_id int(11) NOT NULL,
PRIMARY KEY (person_id,property_id),
FOREIGN KEY (person_id) REFERENCES persons (person_id),
FOREIGN KEY (property_id) REFERENCES properties (property_id)
);
Bây giờ cho phép nói rằng tôi muốn chèn vào cơ sở dữ liệu người này:
- firstname: 'John'
- lastname: 'Doe'
- thuộc tính:' property_A ',' property_B ',' property_C '
người
+-----------+-----------+----------+
| person_id | firstname | lastname |
+-----------+-----------+----------+
| 1 | John | Doe |
+-----------+-----------+----------+
tính
+-------------+------------+
| property_id | property |
+-------------+------------+
| 1 | property_A |
| 2 | property_B |
| 3 | property_C |
+-------------+------------+
has_property
+-----------+-------------+
| person_id | property_id |
+-----------+-------------+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
+-----------+-------------+
Cho đến nay điều tốt nhất tôi có thể nghĩ là để làm một chèn thường xuyên trong bảng người:
INSERT INTO persons (firstname,lastname) VALUES ('John','Doe');
và sau đó làm một lựa chọn để tìm id của người tôi vừa chèn
SELECT person_id FROM persons WHERE firstname='John' AND lastname='Doe';
để chèn vào hai bảng khác (vì tôi cần biết person_id). Nhưng tôi nghĩ rằng phải có một cách tốt hơn, phải không?
Bạn có thể sử dụng 'CHỌN LAST_INSERT_ID()' để lấy Id của hàng chèn cuối cùng –
Đối với những người có thể nói rằng đây là một bản sao, tôi đã đọc câu hỏi này http://stackoverflow.com/questions/ 17767973/chèn-dữ liệu-vào-một-bàn-đó-có-một-nhiều-nhiều-mối quan hệ nhưng nó là mơ hồ và nó đã không giúp tôi. –