এসকিউএলটিতে 1 টিরও বেশি কলামে একটি প্রাথমিক কী নির্দিষ্ট করার জন্য সিনট্যাক্সটি কী?
এসকিউএলটিতে 1 টিরও বেশি কলামে একটি প্রাথমিক কী নির্দিষ্ট করার জন্য সিনট্যাক্সটি কী?
উত্তর:
ডকুমেন্টেশন অনুযায়ী , এটি
CREATE TABLE something (
column1,
column2,
column3,
PRIMARY KEY (column1, column2)
);
CREATE TABLE something (
column1 INTEGER NOT NULL,
column2 INTEGER NOT NULL,
value,
PRIMARY KEY ( column1, column2)
);
NULL
প্রাথমিক কীগুলিতে অনুমোদিত। এই উত্তরটি জোর দেয় যে আপনি যদি আরও মানক আচরণ চান তবে আপনার NOT NULL
নিজের যোগ করা দরকার । আমার উত্তরটি একাধিক-কলাম প্রাথমিক কী এর জন্য খুব প্রাথমিক বাক্য গঠন।
হ্যাঁ. তবে মনে রাখবেন যে এ জাতীয় প্রাথমিক কীটি NULL
উভয় কলামে একাধিকবার মানকে অনুমতি দেয় ।
যেমন একটি সারণী তৈরি করুন:
sqlite> CREATE TABLE something (
column1, column2, value, PRIMARY KEY (column1, column2));
এখন এটি কোনও সতর্কতা ছাড়াই কাজ করে:
sqlite> insert into something (value) VALUES ('bla-bla');
sqlite> insert into something (value) VALUES ('bla-bla');
sqlite> select * from something;
NULL|NULL|bla-bla
NULL|NULL|bla-bla
NULL
?
বেসিক:
CREATE TABLE table1 (
columnA INTEGER NOT NULL,
columnB INTEGER NOT NULL,
PRIMARY KEY (columnA, columnB)
);
যদি আপনার কলামগুলি অন্যান্য সারণীর বিদেশী কী (সাধারণ ক্ষেত্রে) হয়:
CREATE TABLE table1 (
table2_id INTEGER NOT NULL,
table3_id INTEGER NOT NULL,
FOREIGN KEY (table2_id) REFERENCES table2(id),
FOREIGN KEY (table3_id) REFERENCES table3(id),
PRIMARY KEY (table2_id, table3_id)
);
CREATE TABLE table2 (
id INTEGER NOT NULL,
PRIMARY KEY id
);
CREATE TABLE table3 (
id INTEGER NOT NULL,
PRIMARY KEY id
);
প্রাথমিক কী ক্ষেত্রগুলি নাল হিসাবে ঘোষণা করা উচিত (এটি একটি প্রাথমিক কী এর সংজ্ঞা হিসাবে এটি মান নয় এটি অবশ্যই অনন্য হওয়া উচিত এবং নাল নয়)। তবে নীচে কোনও ডিবিএমএসের সমস্ত মাল্টি-কলাম প্রাথমিক কীগুলির জন্য একটি ভাল অনুশীলন is
create table foo
(
fooint integer not null
,foobar string not null
,fooval real
,primary key (fooint, foobar)
)
;
এসকিউএলাইটের সংস্করণ ৩.৮.২, যেহেতু স্পষ্ট নয় নাল স্পেসিফিকেশনের বিকল্প হ'ল "বিনা পাতায়" স্পেসিফিকেশন: [ 1 ]
NOT NULL is enforced on every column of the PRIMARY KEY
in a WITHOUT ROWID table.
"বিনা উইথ রাউড" টেবিলগুলির সম্ভাব্য দক্ষতার সুবিধাগুলি রয়েছে, তাই বিবেচনা করার জন্য একটি কম ভার্বোস বিকল্প হ'ল:
CREATE TABLE t (
c1,
c2,
c3,
PRIMARY KEY (c1, c2)
) WITHOUT ROWID;
উদাহরণস্বরূপ, sqlite3 প্রম্পটে:
sqlite> insert into t values(1,null,3);
Error: NOT NULL constraint failed: t.c2
WITHOUT ROWID
এর অতিরিক্ত সংশ্লেষ রয়েছে এবং এটি NOT NULL
আপনার প্রাথমিক কী এর পাশে লেখার বিকল্প হিসাবে ব্যবহার করা উচিত নয় ।
অন্য উপায়ে, এছাড়াও আপনি করতে পারেন দুই কলামের প্রাথমিক কী unique
এবং স্বয়ংক্রিয় বৃদ্ধি কী primary
। ঠিক এটির মতো: https://stackoverflow.com/a/6157337
নিম্নলিখিত কোডটি এসকিউএলাইটে প্রাথমিক কী হিসাবে 2 কলাম সহ একটি সারণী তৈরি করে ।
সমাধান:
CREATE TABLE IF NOT EXISTS users (id TEXT NOT NULL, name TEXT NOT NULL, pet_name TEXT, PRIMARY KEY (id, name))