जवाबों:
My MySQL का कहना है "गलत तालिका परिभाषा; केवल एक ही ऑटो कॉलम हो सकता है और इसे एक कुंजी के रूप में परिभाषित किया जाना चाहिए " इसलिए जब मैंने प्राथमिक कुंजी जोड़ा तो नीचे काम करना शुरू कर दिया:
CREATE TABLE book (
id INT AUTO_INCREMENT NOT NULL,
accepted_terms BIT(1) NOT NULL,
accepted_privacy BIT(1) NOT NULL,
primary key (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE book ADD id INT AUTO_INCREMENT NOT NULL, ADD PRIMARY KEY (id);
पूर्ण त्रुटि संदेश लगता है:
ERROR 1075 (42000): गलत तालिका परिभाषा; केवल एक ऑटो कॉलम हो सकता है और इसे एक कुंजी के रूप में परिभाषित किया जाना चाहिए
तो जोड़ने primary key
के लिए auto_increment
क्षेत्र:
CREATE TABLE book (
id INT AUTO_INCREMENT primary key NOT NULL,
accepted_terms BIT(1) NOT NULL,
accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
यह भी ध्यान दें कि "कुंजी" का अर्थ प्राथमिक कुंजी नहीं है। कुछ इस तरह काम करेगा:
CREATE TABLE book (
isbn BIGINT NOT NULL PRIMARY KEY,
id INT NOT NULL AUTO_INCREMENT,
accepted_terms BIT(1) NOT NULL,
accepted_privacy BIT(1) NOT NULL,
INDEX(id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
यह एक आकस्मिक उदाहरण है और शायद सबसे अच्छा विचार नहीं है, लेकिन कुछ मामलों में यह बहुत उपयोगी हो सकता है।
CREATE TABLE book (
id INT AUTO_INCREMENT primary key NOT NULL,
accepted_terms BIT(1) NOT NULL,
accepted_privacy BIT(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1