Ve vaší otázce jsou ve skutečnosti dva problémy. První problém je vytvořit Number sloupec jedinečný a druhý je zvýšit sloupec Name připojením čísla, pokud již existuje.
PRVNÍ ČÁST
Protože číslo je UNIQUE , vynutit UNIQUE omezení na sloupu. Může to být PRIMARY KEY nebo UNIQUE KEY .
Pokud sloupec nemá KEY a chcete jej nastavit jako PRIMARY , zde je ALTER prohlášení:
ALTER TABLE TableName ADD CONSTRAINT tb_pk PRIMARY KEY (Number)
ale pokud chcete, aby byl pouze UNIQUE a nikoli primární klíč,
ALTER TABLE TableName ADD CONSTRAINT tb_uq UNIQUE (Number)
DRUHÁ ČÁST
Ve skutečnosti to můžete udělat bez použití join.
INSERT INTO TableName(Number, Name)
SELECT 124 AS Number,
CONCAT('Robert', COALESCE(MAX(CAST(REPLACE(Name, 'Robert', '0') AS UNSIGNED)) + 1,'')) AS Name
FROM TableName
WHERE Name LIKE 'Robert%'
- Ukázka SQLFiddle
- Ukázka SQLFiddle (přidán další příklad )
- Ukázka SQLFiddle (vyvolá výjimku kvůli jedinečnosti )
Některé podrobnosti:
když je hodnota uvedena ve sloupci Number již existuje, vyvolá chybu, protože sloupec je jedinečný. Přečetl jsem si komentář ze smazaných příspěvků:"..Číslo není jedinečné, ale pokud existuje, nechci zadávat záznam." -- nedává to žádný smysl, pokud nechcete přidat jedinečnost na sloupu. Jak zjistíte, zda číslo již existuje nebo ne? Provádíme malou kontrolu existence Number přijde mi to trochu nad hlavou. Takže moje nejlepší doporučení je prosadit jedinečnost.