2012-01-06 7 views
46

मैंने प्राथमिक कुंजी के साथ एक तालिका बनाई है और AUTO_INCREMENT सक्षम है, मैं MYSQL AUTO_INCREMENT का उपयोग कैसे करूं?ऑटो वृद्धिशील प्राथमिक कुंजी वाले MySQL में डेटा कैसे सम्मिलित करें?

CREATE TABLE IF NOT EXISTS test.authors (
    hostcheck_id INT PRIMARY KEY AUTO_INCREMENT, 
    instance_id INT, 
    host_object_id INT, 
    check_type INT, 
    is_raw_check INT, 
    current_check_attempt INT, 
    max_check_attempts INT, 
    state INT, 
    state_type INT, 
    start_time datetime, 
    start_time_usec INT, 
    end_time datetime, 
    end_time_usec INT, 
    command_object_id INT, 
    command_args VARCHAR(25), 
    command_line VARCHAR(100), 
    timeout int, 
    early_timeout INT, 
    execution_time DEC(18,5), 
    latency DEC(18,3), 
    return_code INT, 
    output VARCHAR(50), 
    long_output VARCHAR(50), 
    perfdata VARCHAR(50) 
); 

क्वेरी मैं करता था, मैं पहली बार मूल्य के लिए कोशिश की है "" और "1" लेकिन यह काम नहीं करता है।

INSERT INTO test.authors VALUES ('1','1','67','0','0','1','10','0','1', 
'2012-01-03 12:50:49','108929','2012-01-03 12:50:59','198963','21','', 
'/usr/local/nagios/libexec/check_ping 5','30','0','4.04159','0.102','1', 
'PING WARNING -DUPLICATES FOUND! Packet loss = 0%, RTA = 2.86 ms','', 
'rta=2.860000m=0%;80;100;0'); 

उत्तर

42

आदेश, स्तंभ के ऑटो बढ़ाने की क्षमता का लाभ लेने के लिए जब पंक्तियों डालने उस स्तंभ के लिए एक मूल्य की आपूर्ति नहीं करते हैं। डेटाबेस आपके लिए एक मूल्य प्रदान करेगा।

INSERT INTO test.authors (
    instance_id,host_object_id,check_type,is_raw_check, 
    current_check_attempt,max_check_attempts,state,state_type, 
    start_time,start_time_usec,end_time,end_time_usec,command_object_id, 
    command_args,command_line,timeout,early_timeout,execution_time, 
    latency,return_code,output,long_output,perfdata 
) VALUES (
    '1','67','0','0','1','10','0','1','2012-01-03 12:50:49','108929', 
    '2012-01-03 12:50:59','198963','21','', 
    '/usr/local/nagios/libexec/check_ping 5','30','0','4.04159', 
    '0.102','1','PING WARNING -DUPLICATES FOUND! Packet loss = 0%, RTA = 2.86 ms', 
    '','rta=2.860000m=0%;80;100;0' 
); 
+76

या बस पारित शून्य –

+0

लेकिन क्वेरी तुम मेरे लिए चिपकाया आप मूल्य डाल प्राइमरी कुंजी के लिए ?? –

+2

@ सलमानराज़ा: नहीं, देखो: मैंने सुझाए गए प्रश्न से कॉलम "hostcheck_id" गायब है। मैंने केवल 23 कॉलम के लिए मूल्य दिए लेकिन तालिका में 24 कॉलम हैं। मुझे लगता है कि एड्रियन का सुझाव भी काम करेगा, लेकिन मुझे नहीं पता था कि आप ऐसा कर सकते हैं! – Celada

86

0 शून्य पर या अगर आप इसे ऑटो जादुई सौंपा होना चाहता हूँ ऑटो वेतन वृद्धि क्षेत्र सेट करें ...

+2

+1 के लिए '0' मान पास करता हूं यह सबसे आसान समाधान है। – CodeBlue

+0

यह मेरे लिए ऑटोइनक्रिकमेंट कॉलम मान छोड़ने के विपरीत काम करता है। – ASten

+0

यह स्वीकार्य उत्तर होना चाहिए। –

5
this पद

चेक बाहर

इसके अनुसार

नहीं मूल्य AUTO_INCREMENT कॉलम के लिए निर्दिष्ट किया गया था, इसलिए MySQL अनुक्रम अनुक्रम संख्या स्वचालित रूप से असाइन की गई। अनुक्रम संख्या उत्पन्न करने के लिए आप स्पष्ट रूप से कॉलम में NULL या 0 असाइन कर सकते हैं।

6

default कीवर्ड मेरे लिए काम करता है:

mysql> insert into user_table (user_id, ip, partial_ip, source, user_edit_date, username) values 
(default, '39.48.49.126', null, 'user signup page', now(), 'newUser'); 
--- 
Query OK, 1 row affected (0.00 sec) 

मैं mysql --version 5.1.66 चल रहा हूँ:

mysql Ver 14.14 Distrib **5.1.66**, for debian-linux-gnu (x86_64) using readline 6.1 
+0

जब तक कॉलम कॉलम के क्रम से मेल खाते हैं तब तक आप कॉलम नाम छोड़ सकते हैं। इसे करने के लिए इसे खराब अभ्यास माना जा सकता है, लेकिन एक बार त्वरित प्रविष्टि के लिए यह एक अच्छा समाधान है। – Shahar

+0

@ शाहर कॉलम नाम छोड़ने से यह बहुत बेहतर है। इस तरह, आपके पास अपने SQL – user3284463

+0

@ user3284463 में क्या हो रहा है, इस बारे में एक बेहतर विचार है कि मैं पूरी तरह से सहमत हूं, मुझे लगता है कि यह उल्लेखनीय है। – Shahar

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