Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql вмъкване в 2 таблици наведнъж, които имат първичен ключ и външен ключ

Можете да използвате STORED PROCEDURE на това, така че ще се обадите само веднъж от нивото на приложението. Пример,

DELIMITER $$
CREATE PROCEDURE InsertBook
(
    IN _Title INT,
    IN _AwardName VARCHAR(35),
    IN _Year INT
)
BEGIN
    INSERT INTO Books (Title)
    VALUES(_Title);

    -- since the ID is set as AUTO_INCREMENT
    -- there are two ways to do how you can get the ID 
    -- from the Books Table and insert it 
    -- on BookAwards

    -- FIRST WAY
    -- by using LAST_INSERT_ID()
    SET @last_ID = LAST_INSERT_ID();

    -- SECOND WAY
    -- by using MAX()
    -- SET @last_ID = (SELECT MAX(ID) FROM Books);


    INSERT INTO BookAwards(ID, AwardName, Year)
    VALUES (@last_ID, _AwardName, _Year);
END $$
DELIMITER ;

И на ниво приложение или на всички източници, които искате да извикате тази процедура,

CALL InsertBook('Lost Art', 'Best in Churva', 2013);

От съображения за сигурност все още можете да параметризирате процедурата, напр.

CALL InsertBook(?, ?, ?);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. REPLACE в MySQL, независимо от главните букви?

  2. Как да намеря предишен запис [n-per-group max(timestamp) <timestamp]?

  3. count(*) и count(column_name), каква е разликата?

  4. asp.net съхранява роли в сесия Roles.AddUsertoRole (не е това, което търся?)

  5. PHP/MySQL:Най-добри практики за парични операции/съхранение?