あなたの質問には実際には2つの問題があります。最初の問題は、Number
を作成することです 列は一意で、2番目は列のName
をインクリメントすることです すでに存在する場合は番号を追加します。
最初の部分
番号はUNIQUE
なので 、UNIQUE
を適用します 列の制約。 PRIMARY KEY
の可能性があります またはUNIQUE KEY
。
列にKEY
がない場合 PRIMARY
にしたい 、これがALTER
ステートメント:
ALTER TABLE TableName ADD CONSTRAINT tb_pk PRIMARY KEY (Number)
ただし、UNIQUE
にしたいだけの場合 主キーではありません
ALTER TABLE TableName ADD CONSTRAINT tb_uq UNIQUE (Number)
第2部
参加せずに実際に行うことができます。
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%'
詳細:
列Number
で指定された値の場合 すでに存在する場合、列が一意であるため、エラーがスローされます。削除された投稿からのコメントを読みました: "..番号は一意ではありませんが、存在する場合は、レコードを入力したくありません。" -一意性を追加したくない場合は意味がありません カラムに。その番号がすでに存在するかどうかをどうやって知ることができますか? Number
の存在を少し確認します 私にとっては少し頭上にあるような気がします。したがって、私の最善の推奨事項は、一意性を強制することです。