মাইএসকিউএলে স্বয়ংক্রিয় বর্ধিত প্রাথমিক কী থাকা কীভাবে ডেটা ?োকানো যায়?


88

আমি একটি প্রাথমিক কী সহ একটি সারণী তৈরি করেছি এবং সক্ষম করেছি AUTO_INCREMENT, আমি কীভাবে এমওয়াইএসকিউএল ব্যবহার করব AUTO_INCREMENT?

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'); 

উত্তর:


74

কলামটির স্ব-বর্ধমান সক্ষমতার সুবিধা নিতে, সারি সন্নিবেশ করার সময় when কলামটির জন্য কোনও মান সরবরাহ করবেন না। ডাটাবেস আপনার জন্য একটি মান সরবরাহ করবে।

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'
);

তবে আপনি যে ক্যোয়ারীটি আমার জন্য আটকালেন সেগুলি আপনি প্রাইমারি কীটির জন্য মূল্য রেখেছেন ??
সালমান রাজা

4
@ সালমানরাজা: না, দেখুন: "হোস্টচেক_আইডি" কলামটি আমার প্রস্তাবিত ক্যোয়ারী থেকে অনুপস্থিত। আমি কেবল 23 টি কলামের জন্য মান দিয়েছি তবে সারণীতে 24 টি কলাম রয়েছে। আমার ধারণা অ্যাড্রিয়ানের পরামর্শটিও কার্যকর হবে তবে আমি জানতাম না যে আপনি এটি করতে পারেন!
সেলেদা

4
@ ক্যালাডা এই সাইটটি সম্পর্কে দুর্দান্ত জিনিস - আপনার নিজের উত্তর সঠিক হওয়া সত্ত্বেও আপনি কিছু শিখতে পারেন :-)
অ্যাড্রিয়ান কর্নিশ

4
আপনার উত্তরের জন্য সমস্ত ধন্যবাদ! এটি আমাকে প্রাইমারি কী কলামটির জন্য '0' মানটি পাস করতে সহায়তা করে
সালমান রাজা

153

আপনি যদি যাদুতে স্বতঃস্ফুর্ত হতে চান তবে অটো বর্ধন ক্ষেত্রটি NULL বা 0 এ সেট করুন ...


এটি আমার জন্য স্বতঃসংশোধের কলাম মান বাদ দিয়ে কাজ করে।
এস্টেন

4
পছন্দ NULLহিসাবে, 0এর আচরণ NO_AUTO_VALUE_ON_ZERO দ্বারা প্রভাবিত হতে পারে ।
বেনিয়ামিন

14

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 --version5.1.66 চালিয়ে যাচ্ছি:

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

মানগুলি যতক্ষণ না কলামগুলির ক্রমের সাথে মেলে ততক্ষণ আপনি কলামের নামগুলি রেখে দিতে পারেন। এটি করা খারাপ অভ্যাস হিসাবে বিবেচিত হতে পারে তবে এক সময়ের দ্রুত quickোকানোর জন্য এটি একটি ভাল সমাধান।
শাহর

@ সাহার এটি কলামের নাম বাদ দেওয়ার চেয়ে অনেক ভাল। এইভাবে, আপনার এসকিউএল-তে কী চলছে সে সম্পর্কে আপনার আরও ভাল ধারণা রয়েছে
রাস্টি

@ ব্যবহারকারী 3284463 আমি সম্পূর্ণরূপে একমত, আমার মনে হয় এটি উল্লেখযোগ্য।
শাহার

4
হ্যাঁ, সমস্যাটি হ'ল অর্ডারটি এখনই মিলতে পারে তবে স্কেলটি খুব বেশি চালিত হলে প্রয়োজনীয়ভাবে মেলে না।
Kzqai

অনেক ধন্যবাদ, পটগ্রেস ১০.১০ এর জন্য 0 বা নাল মান রাখার অনুমতি নেই তবে এটি ডিফল্টর সাথে কাজ করে;
টারমোগয়ফ

11

পরীক্ষা করে দেখুন এই পোস্টে

এটি অনুসারে

স্বয়ংক্রিয় কলামের জন্য কোনও মান নির্দিষ্ট করা হয়নি, তাই মাইএসকিউএল স্বয়ংক্রিয়ভাবে সিকোয়েন্স নম্বর নির্ধারণ করেছে। ক্রম সংখ্যা উত্পন্ন করতে আপনি কলামে স্পষ্টভাবে NULL বা 0 নির্ধারণ করতে পারেন।


3

আমি এখানে তিনটি সম্ভাবনা দেখতে পাচ্ছি যা আপনাকে সম্পূর্ণ টালমাটাল না করে আপনার টেবিলের ভিতরে প্রবেশ করতে সহায়তা করবে তবে স্বতঃপরিচয় কলামের জন্য একটি মান "নির্দিষ্ট করে" , যেহেতু আপনি সমস্ত মান সরবরাহ করছেন আপনি নীচের বিকল্পগুলির মধ্যে যে কোনও একটি করতে পারেন।

প্রথম পদ্ধতির ( NULL সরবরাহ ):

INSERT INTO test.authors VALUES (
 NULL,'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'
);

দ্বিতীয় পন্থা (সরবরাহ '' {সহজ উক্তি / অ্যাডোস্ট্রোফস - যদিও এটি আপনাকে একটি সতর্কতা দেয়):

INSERT INTO test.authors 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'
);

তৃতীয় পদ্ধতি (সরবরাহ ডিফল্ট ):

INSERT INTO test.authors VALUES (
 default,'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'
);

এই টেবিলে সন্নিবেশ করার সময় এই উদাহরণগুলির মধ্যে একটি পর্যাপ্ত হওয়া উচিত যতক্ষণ আপনি টেবিলটি তৈরি করার সময় সমস্ত মানকে একই ক্রমে অন্তর্ভুক্ত করেছিলেন যেমন আপনি সেগুলি সংজ্ঞায়িত করেছেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.