好的,我有2张桌子。得分和球员。播放器包含播放器名称和他们的ID。分数是球员,他们的身份和分数的列表。
我努力制作一个触发器,将新的名字从得分列表中插入玩家。之后它应该用玩家ID更新得分列表,因为这是玩家表中的自动增量PK。
我该怎么做?
到目前为止,我有两个问题:
INSERT INTO players (`pname`)
SELECT DISTINCT
`pname`
FROM
score
Where `pname`
NOT IN (
SELECT `Playername`
from
players) ;
__
UPDATE score
INNER JOIN
.players
SET
score.playerid = players.pid
WHERE
score.pname = players.Playername ;
但它们不会在触发器内触发,因为它们会干扰或尝试同时访问同一个表。
将begin.....end
中的两个语句放在一起工作..
关于此的任何指示都会很棒!
修改
CREATE TRIGGER `dbname`.`score_AFTER_INSERT`
AFTER INSERT ON `score` FOR EACH ROW
begin
INSERT INTO players (`pname`)
SELECT DISTINCT
`pname`
FROM
score
Where `pname`
NOT IN (
SELECT `Playername`
from
players) ;
UPDATE score
INNER JOIN
.players
SET
score.playerid = players.pid
WHERE
score.pname = players.Playername ;
end