Jag ska prova, men tänk på att det kommer från en Microsoft SQL-bakgrund och jag är inte bekant med den exakta strukturen i dina tabeller, så en del av SQL-en är förmodligen lite tuff.
IF (SELECT COUNT(*) FROM beta WHERE name = 'John' > 0)
UPDATE alfa SET c1=(SELECT id FROM beta WHERE name = 'John')
ELSE
BEGIN
INSERT INTO beta (name) VALUES ('John')
INSERT INTO alfa (c1) VALUES (LAST_INSERT_ID())
END
Hoppas detta är till någon hjälp.