2010-03-02 14 views
8

में है मैं एक टेबल कारें और CarDescriptionsसम्मिलित या अद्यतन करता है, तो रिकॉर्ड तालिका

है

कारों: IDCar (पूर्णांक, पी, autoincrement) carsDesciptions (IDDescription, हैडर (nvarchar), सामग्री (nvarchar), । idCar (पूर्णांक, FK)

आवेदन मैं कारों द्वारा जोड़ा जा रहा में और मौजूदा संपादन

मेरे समस्याओं:

+०१२३५१६४१०६

1. डेटाबेस में विवरण के साथ बदली गई कार को कैसे सहेजना है ??

मैं कार की आईडी है, और मुझे विवरण

कक्षा CarDescirption IsChanged की तरह किसी भी पूल नहीं है के पहचान पत्र है, तो

मैं की तरह कुछ भी नहीं करते करना चाहते हैं:

  1. carsdescriptions से हटा दें जहां idcar = @ idcar cardescriptions में
  2. डालने (, @ हैडर, @ सामग्री, @ IDCar)

यदि तालिका में है रिकॉर्ड अद्यतन किया जाना चाहिए, और डाला यदि तालिका में

+0

आप किस डेटाबेस का उपयोग कर रहे हैं? –

+0

माइक्रोसॉफ्ट एसक्यूएल सर्वर 2005 – user278618

उत्तर

12

यह सबसे अच्छा perfomacne है:

UPDATE Table1 SET (...) WHERE Column1='SomeValue' 
IF @@ROWCOUNT=0 
    INSERT INTO Table1 VALUES (...) 
5

शायद कुछ कुछ संशोधन के साथ इसी तरह अस्तित्व में नहीं है काम करेगा

IF EXISTS (SELECt * FORM carsdescriptions WHERE IDCar = @IDCar) 
     UPDATE carsdescriptions 
     SET Header = @Header, Content = @Content 
     WHERE IDCar = @IDCar 
    ELSE 
     INSERT INTO carsdescriptions (IDCar, Header, Content) 
     VALUES (@IDCar, @Header, @Content) 

इस लेख पर एक नज़र डालें साथ ही, आप अधिक जानकारी प्राप्त होगी

+0

मुझे अपडेट पता है :) – user278618

-1
+0

यह निश्चित रूप से प्रश्न का एक बहुत ही विशिष्ट जवाब नहीं है। –

+0

बहुत सच है। जैसा कि मैंने सवाल दोबारा पढ़ा, मैं देखता हूं कि मैंने इसे गलत समझा है .. –

+2

फिर इस शोर को हटा दें – nawfal

0

आप एक अगर अगर रिकॉर्ड तालिका में मौजूद है को देखने के लिए पहले मौजूद है ऐसा करने के लिए चाहता हूँ। यदि ऐसा नहीं होता है, तो नई कार डालें, अन्यथा मौजूदा रिकॉर्ड अपडेट करें।

7

SqlServer 2008 में जो वास्तव में यह करता है an UPSERT command। मैंने कोशिश नहीं की।

संबंधित मुद्दे