Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

मैं SQL सर्वर तालिका में डुप्लिकेट डेटा डालने से कैसे रोक सकता हूं?

सबसे पहले, आप एक अद्वितीय अनुक्रमणिका या बाधा का उपयोग करके किसी डुप्लिकेट को तालिका में कभी भी होने से रोक सकते हैं। एक इंडेक्स/बाधा कॉन्सर्ट में काम कर सकती है नीचे दिए गए सुझावों के साथ। यदि आप केवल एक अद्वितीय अनुक्रमणिका का उपयोग करें और नीचे दिए गए समाधानों में से किसी एक का नहीं, डुप्लिकेट रिकॉर्ड डालने से एक त्रुटि होगी और आपको इसे दूसरे छोर पर संभालना होगा।

इसके अतिरिक्त, मैं शायद एक संग्रहीत प्रक्रिया के माध्यम से डेटा डालूंगा जो यह देखने के लिए जांचता है कि पंक्ति पहले से मौजूद है या नहीं। ऐसा करने के लिए, आप या तो MERGE . का उपयोग कर सकते हैं बयान, जैसा कि इस छद्म कोड में दिखाया गया है:

create procedure MyProcedure
(
    @Name nvarchar(100),
    ...
)
as

merge MyTable
using
(
    select @Name,...
) as source (Name, ...)
on MyTable.Name = source.Name
when not matched then
    insert (Name,...) values (source.Name,...)
when matched then
    update set Name = @Name,...

या, आप रिकॉर्ड के अस्तित्व की जांच कर सकते हैं और मैन्युअल रूप से सम्मिलित या अपडेट कर सकते हैं:

create procedure MyProcedure
(
    @Name nvarchar(100),
    ...
)
as

    if not exists (select * from MyTable where Name = @Name)
    begin
        insert into MyTable (Name,...) values (@Name,...)
    end
    else
    begin
            update MyTable
            set ...
            where Name = @Name
    end


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं SQL सर्वर में दिनांक के रूप में दो टाइमस्टैम्प की तुलना कैसे करूं

  2. SQL में अस्पष्ट स्तंभ नाम के साथ क्वेरी त्रुटि

  3. SQL तालिका से डुप्लिकेट पंक्तियों को हटाना (एकाधिक स्तंभों के मानों के आधार पर)

  4. बीसीपी कोई त्रुटि नहीं देता है, लेकिन किसी भी पंक्ति की प्रतिलिपि नहीं बनाता है

  5. गुंजाइश_पहचान के बजाय @@ पहचान का उपयोग करने का कारण