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

SQL सर्वर 2005 में अप्सर्ट (अपडेट या इंसर्ट) कैसे करें?

अस्तित्व की जांच करने का प्रयास करें:

IF NOT EXISTS (SELECT * FROM dbo.Employee WHERE ID = @SomeID)

    INSERT INTO dbo.Employee(Col1, ..., ColN)
    VALUES(Val1, .., ValN)

ELSE

    UPDATE dbo.Employee
    SET Col1 = Val1, Col2 = Val2, ...., ColN = ValN
    WHERE ID = @SomeID

आप इसे आसानी से एक संग्रहित प्रक्रिया में लपेट सकते हैं और बस उस संग्रहीत प्रक्रिया को बाहर से कॉल कर सकते हैं (उदाहरण के लिए प्रोग्रामिंग भाषा जैसे सी # या जो भी आप उपयोग कर रहे हैं)।

अपडेट करें: या तो आप इस पूरे कथन को केवल एक लंबी स्ट्रिंग में लिख सकते हैं (साध्य - लेकिन वास्तव में बहुत उपयोगी नहीं) - या आप इसे एक संग्रहीत प्रक्रिया में लपेट सकते हैं:

CREATE PROCEDURE dbo.InsertOrUpdateEmployee
       @ID INT,
       @Name VARCHAR(50),
       @ItemName VARCHAR(50),  
       @ItemCatName VARCHAR(50),
       @ItemQty DECIMAL(15,2)
AS BEGIN
    IF NOT EXISTS (SELECT * FROM dbo.Table1 WHERE ID = @ID)
       INSERT INTO dbo.Table1(ID, Name, ItemName, ItemCatName, ItemQty)
       VALUES(@ID, @Name, @ItemName, @ItemCatName, @ItemQty)
    ELSE
       UPDATE dbo.Table1
       SET Name = @Name,
           ItemName = @ItemName,
           ItemCatName = @ItemCatName,
           ItemQty = @ItemQty
       WHERE ID = @ID
END

और फिर बस उस संग्रहीत कार्यविधि को अपने ADO.NET कोड से कॉल करें



  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 सर्वर में उपलब्ध विभिन्न प्रकार की बाधाएँ क्या हैं - SQL सर्वर / T-SQL ट्यूटोरियल भाग 50

  2. SQL सर्वर में एक पूर्णांक को दशमलव में कैसे बदलें

  3. बाइंडिंग विधि का उपयोग किए बिना डेटा बेस से ग्रिडव्यू में ग्रिड डेटा लोड करें

  4. LEFT OUTER JOIN बनाम NOT EXISTS पर SQL प्रदर्शन

  5. SQL सर्वर में तालिका-मूल्यवान फ़ंक्शन के माध्यम से डेटा हटाएं