2015-04-22 11 views
6

में डुप्लिकेट कुंजी अपडेट सुविधा पर मैंने एच 2 (एंबेडेड) के उपयोग के साथ जावा डेस्कटॉप एप्लिकेशन विकसित किया है। मेरे पास डेटाबेस के बारे में बुनियादी ज्ञान है, इसलिए मैंने बस H2 स्थापित किया है और एक स्कीमा नाम रिकॉर्डऑटोमेशन बनाया है और फिर उस स्कीमा में टेबल जोड़ें। अब मैं एक विशिष्ट तालिका जो एसक्यूएल सिंटेक्स त्रुटि दे रही है काम नहीं कर रहा के लिए चालू कर नकली चाबी अद्यतन सुविधा का उपयोग करने की कोशिश कर रहा हूँ, मैं अपने क्वेरी जाँच मैंने पाया मैं खोज और इस हल करने का प्रयास यह सही,एच 2

INSERT INTO RECORDAUTOMATION.MREPORT 
(PRODUCTID ,DESCRIPTION ,QUANTITY ,SUBTOTAL ,PROFIT) 
VALUES (22,olper,5,100,260) 
ON DUPLICATE KEY UPDATE SET QUANTITY = QUANTITY+5; 

नीचे दिए गए कुछ ऐसी समस्याएं जहां इस चर्चा की तरह चर्चा की गई है, गैर-डिफ़ॉल्ट तालिकाओं के लिए काम नहीं करती है। मुझे डिफ़ॉल्ट और गैर-डिफ़ॉल्ट के बारे में कोई जानकारी नहीं है। कृपया मुझे मदद करें

+1

ऐसा कोई वाक्य रचना है, मैनुअल देखें: http://www.h2database.com/html/grammar.html#insert आप 'MERGE' बयान के लिए देख रहे हैं: http: // www.h2database.com/html/grammar.html#merge –

+0

@a_horse_with_no_name यह mysql में काम करता है ... मुझे क्वेरी की आवश्यकता है जो डुप्लिकेटिंग कुंजी – rockledgeDev

+0

पर अद्यतन कर सकता है ठीक है H2 MySQL नहीं है। जैसा कि मैंने कहा था: आप मेर्ज स्टेटमेंट की तलाश में हैं। –

उत्तर

12

आपको MySQL मोड का उपयोग करने की आवश्यकता है। ऐसा करने के लिए, डेटाबेस URL पर ;mode=MySQL संलग्न करें। (यह सुविधा अभी तक ठीक तरह से प्रलेखित नहीं है)।

तालिका में प्राथमिक कुंजी या कम से कम एक अद्वितीय अनुक्रमणिका होना आवश्यक है। पूरा उदाहरण:

drop table MREPORT; 

set mode MySQL; 

create table MREPORT(PRODUCTID int primary key, 
DESCRIPTION varchar, QUANTITY int, SUBTOTAL int, PROFIT int); 

INSERT INTO MREPORT 
(PRODUCTID ,DESCRIPTION ,QUANTITY ,SUBTOTAL ,PROFIT) 
VALUES (22,'olper',5,100,260) 
ON DUPLICATE KEY UPDATE QUANTITY = QUANTITY+5; 
+0

फ़ीचर समर्थित नहीं है: "डिप्लीकेट कुंजी अपडेट पर आवेदन करने में असमर्थ, कोई अनुक्रमणिका नहीं मिली!"; मैं MySQL मोड लागू करता हूं लेकिन फिर भी यह काम नहीं कर रहा है – rockledgeDev

+0

हां, यह एक अलग समस्या है। "कोई अनुक्रमणिका नहीं मिली" का अर्थ है, अच्छी तरह से "कोई अनुक्रमणिका नहीं मिली"। मैंने एक उदाहरण के साथ जवाब अद्यतन किया। मदद के लिए –

+0

धन्यवाद। पहली बार जब टेबल खाली था, तो आपकी क्वेरी ठीक काम करती है लेकिन दूसरी बार डेटा डुप्लीकेट होने पर मुझे यह त्रुटि मिल रही है: कॉलम "PUBLIC.MREPORT.PRODUCTID" नहीं मिला; SQL विवरण: INSERT INTO recordautomation.MREPORT (productId, विवरण, मात्रा, SUBTOTAL, लाभ) मान (22, 'olper', 5,100,260) पर नकली चाबी अद्यतन मात्रा = मात्रा + 5 – rockledgeDev

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