Thực sự có hai vấn đề trong câu hỏi của bạn. Vấn đề đầu tiên là tạo Number
cột duy nhất và cột thứ hai là để tăng cột Name
bằng cách thêm một số nếu nó đã tồn tại.
PHẦN ĐẦU TIÊN
Vì số là UNIQUE
, thực thi một UNIQUE
ràng buộc trên cột. Nó có thể là PRIMARY KEY
hoặc UNIQUE KEY
.
Nếu cột không có KEY
và bạn muốn đặt nó thành PRIMARY
, đây là ALTER
tuyên bố:
ALTER TABLE TableName ADD CONSTRAINT tb_pk PRIMARY KEY (Number)
nhưng nếu bạn chỉ muốn nó là UNIQUE
và không phải là khóa chính,
ALTER TABLE TableName ADD CONSTRAINT tb_uq UNIQUE (Number)
PHẦN THỨ HAI
Bạn thực sự có thể làm điều đó mà không cần sử dụng tham gia.
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%'
- SQLFiddle Demo
- SQLFiddle Demo ( đã thêm ví dụ khác )
- SQLFiddle Demo ( ném ngoại lệ do tính duy nhất )
Một số chi tiết:
khi giá trị được cung cấp trên cột Number
đã tồn tại, nó sẽ báo lỗi vì cột là duy nhất. Tôi đã đọc nhận xét từ một bài đăng đã xóa nói rằng: "..Số không phải là duy nhất, nhưng nếu nó tồn tại, tôi không muốn nhập hồ sơ." - sẽ không có ý nghĩa gì nếu bạn không muốn thêm tính độc đáo trên cột. Làm thế nào bạn sẽ biết nếu số đã tồn tại hay chưa? Thực hiện một chút kiểm tra sự tồn tại của Number
cảm thấy như một chút phí cho tôi. Vì vậy, khuyến nghị tốt nhất của tôi là thực thi tính duy nhất.