आपके प्रश्न में वास्तव में दो समस्याएं हैं। पहली समस्या Number
. बनाना है कॉलम अद्वितीय है और दूसरा कॉलम 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)
दूसरा भाग
आप वास्तव में इसे शामिल किए बिना कर सकते हैं।
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 डेमो
- SQLFiddle डेमो (और उदाहरण जोड़ा गया )
- SQLFiddle डेमो (विशिष्टता के कारण अपवाद फेंकता है )
कुछ विवरण:
जब कॉलम Number
. पर दिया गया मान पहले से मौजूद है, यह एक त्रुटि देगा क्योंकि कॉलम अद्वितीय है। मैंने हटाई गई पोस्ट से यह कहते हुए एक टिप्पणी पढ़ी है:"..संख्या अद्वितीय नहीं है, लेकिन यदि यह मौजूद है, तो मैं कोई रिकॉर्ड दर्ज नहीं करना चाहता।" -- अगर आप विशिष्टता जोड़ना नहीं चाहते हैं तो इसका कोई मतलब नहीं है कॉलम पर। आपको कैसे पता चलेगा कि संख्या पहले से मौजूद है या नहीं? Number
. के अस्तित्व के लिए थोड़ी जांच करना मेरे लिए थोड़ा ओवरहेड जैसा लगता है। इसलिए मेरी सबसे अच्छी सिफारिश है कि विशिष्टता को लागू किया जाए।