डिफ़ॉल्ट मान के रूप में गलत के साथ MySQL में बूलियन कॉलम बनाएं?


127

मैं एक booleanकॉलम के साथ MySQL में एक तालिका बनाना चाहता हूं जिसका डिफ़ॉल्ट मूल्य है false। लेकिन यह NULL को डिफ़ॉल्ट के रूप में स्वीकार कर रहा है ...

जवाबों:


202

आपको डिफ़ॉल्ट के रूप में 0(मतलब गलत) या 1(सही अर्थ ) निर्दिष्ट करना होगा । यहाँ एक उदाहरण है:

create table mytable (
     mybool boolean not null default 0
);

FYI करें: के booleanलिए एक उपनाम है tinyint(1)

यहाँ सबूत है:

mysql> create table mytable (
    ->          mybool boolean not null default 0
    ->     );
Query OK, 0 rows affected (0.35 sec)

mysql> insert into mytable () values ();
Query OK, 1 row affected (0.00 sec)

mysql> select * from mytable;
+--------+
| mybool |
+--------+
|      0 |
+--------+
1 row in set (0.00 sec)

FYI करें: मेरा परीक्षण MySQL के निम्नलिखित संस्करण पर किया गया था:

mysql> select version();
+----------------+
| version()      |
+----------------+
| 5.0.18-max-log |
+----------------+
1 row in set (0.00 sec)

2
या करता है? शेल स्क्रिप्टिंग में 0 का मतलब सफल या 'सही' हो सकता है। यह अच्छा होगा यदि MySQL वास्तव में 'सही' और 'गलत' लौटाए ताकि हमें कोड पर भरोसा न करना पड़े, जो कि मूल्य का अर्थ है।
tu-Reinstate Monica-dor duh

3
संयोग से, चूंकि बूलियन टिंटिंट (1) के लिए एक उपनाम है, इसका मतलब है कि आप 0 और 1 के अलावा अन्य संख्याओं के लिए बूलियन सेट कर सकते हैं और यह शिकायत नहीं करेगा! जिसका मतलब है कि यदि आप गलती से क्षेत्र में वृद्धि या वृद्धि करते हैं तो आप अपने डेटा को गड़बड़ कर सकते हैं! : -O मैं इसके बजाय एक ENUM फ़ील्ड का उपयोग करने की सलाह दूंगा।
tu-Reinstate Monica-dor duh

3
"सफल" और "सच" पूरी तरह से रूढ़िवादी बातें हैं। त्रुटि कोड बूलियन नहीं हैं।
मत्ती

14

सत्य / असत्य के लिए MySQL में ENUM का उपयोग करें यह बिना किसी अतिरिक्त कोड के सही / गलत मान देता है।

ALTER TABLE `itemcategory` ADD `aaa` ENUM('false', 'true') NOT NULL DEFAULT 'false'

11

आप निर्माण समय पर एक डिफ़ॉल्ट मान सेट कर सकते हैं जैसे:

CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
Married boolean DEFAULT false);

1

यदि आप बूलियन कॉलम को अशक्त नहीं बना रहे हैं, तो डिफ़ॉल्ट 'डिफ़ॉल्ट' मान गलत है; आपको इसे स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता नहीं है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.