INSERT RETURNING 从一个查询到另一个查询

INSERT RETURNING from one query to another

所以我需要在两个表中插入一个值,但我需要两个表中的 ID 相同,我试图从第一个查询中获取重新调整 ID 以将其传递给第二个查询。 这是我目前所拥有的。

INSERT
    INTO
    FantasyLeague.calendar (
  round,
    status,
    race_initial,
    race_name,
    city,
    country,
    circuit_name,
    start_date,
    quali_deadline,
    sprit_deadline,
    race_deadline,
    series_id)
VALUES (
new_round,
new_status,
new_race_initial,
new_race_name,
new_city,
new_country,
new_circuit_name,
new_start_date,
new_quali_deadline,
new_sprit_deadline,
new_race_deadline,
new_series_id)
RETURNING SET @id = race_id;

INSERT
    INTO
    FantasyLeague.races (race_id,
    drivers_results,
    series_id)
VALUES(
    @id,
    new_driver_results,
    new_series_id
  );

race_id 在 FantasyLeague.calendar 中是一个自动递增的 INT,但在 FantasyLeague.races 中不是。 我尝试使用 post 中的方法,但出现语法错误。

INSERT
    INTO
    FantasyLeague.calendar (
    round,
    status,
    race_initial,
    race_name,
    city,
    country,
    circuit_name,
    start_date,
    quali_deadline,
    sprit_deadline,
    race_deadline,
    series_id)
VALUES (
new_round,
new_status,
new_race_initial,
new_race_name,
new_city,
new_country,
new_circuit_name,
new_start_date,
new_quali_deadline,
new_sprit_deadline,
new_race_deadline,
new_series_id)
RETURNING race_id) )

INSERT
    INTO
    FantasyLeague.races (race_id,
    drivers_results,
    series_id)
SELECT 
    race_id,
    new_driver_results,
    new_series_id;

提前致谢。

从未使用过 Maria,但我相信您会采用 MySQL 方法:

INSERT INTO FantasyLeague.races (
    race_id,
    drivers_results,
    series_id)
VALUES(
    LAST_INSERT_ID(),
    new_driver_results,
    new_series_id
);

LAST_INSERT_ID() returns 刚刚插入 FantasyLeague.calendar 之前的 ID,从而连接关系

您还可以将 ID 存储在您使用的变量中(可能多次)..

INSERT INTO calendar ...;

SET @lii = LAST_INSERT_ID();

INSERT INTO FantasyLeague.races (
    race_id,
    drivers_results,
    series_id
)
VALUES(
    @lii,
    new_driver_results,
    new_series_id
);

INSERT INTO FantasyLeague.other(
    race_id,
    blah
)
VALUES(
    @lii,
    blah
);