Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách chèn dữ liệu vào nhiều bảng có liên quan đến phụ thuộc khóa ngoại (MySQL)

Tóm lại, bạn muốn sử dụng giao dịch (tài liệu khác về điều này) để các nội dung chèn của bạn là nguyên tử . Đây là cách duy nhất để đảm bảo rằng tất cả (hoặc không) dữ liệu của bạn sẽ được chèn vào. Nếu không, bạn có thể gặp phải tình huống như mô tả khi cơ sở dữ liệu không khả dụng sau khi một số lần chèn và những lần khác không thể hoàn thành. Một giao dịch cho cơ sở dữ liệu biết rằng những gì bạn đang làm là hoàn toàn hoặc không có gì và vì vậy nó sẽ quay trở lại nếu có sự cố.

Như bạn đang sử dụng khóa chính tổng hợp, PHP và các ngôn ngữ khác cung cấp các cơ chế để lấy id được chèn lần cuối. Nếu bạn muốn thực hiện hoàn toàn trong MySQL, bạn có thể sử dụng LAST_INSERT_ID () hàm số. Bạn sẽ có mã như thế này:

START TRANSACTION;
INSERT INTO foo (auto,text)
    VALUES(NULL,'text');         # generate ID by inserting NULL
INSERT INTO foo2 (id,text)
    VALUES(LAST_INSERT_ID(),'text');  # use ID in second table
COMMIT;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại sao kết quả của tôi bị trùng lặp khi sử dụng truy vấn con?

  2. Django tự tham gia, Cách chuyển đổi truy vấn này thành truy vấn ORM

  3. Tạo sơ đồ cơ sở dữ liệu trong MySQL Workbench

  4. PHP &MySQL Cách hiển thị danh mục bất kỳ danh mục con nào từ cơ sở dữ liệu

  5. Lấy ID được chèn lần cuối cùng với biểu thức trong mysql