PostgreSQL এ একাধিক প্রাথমিক কী


13

আমার নিম্নলিখিত টেবিল রয়েছে:

CREATE TABLE word(
word CHARACTER VARYING NOT NULL,
id BIGINT NOT NULL,
repeat INTEGER NOT NULL
);
ALTER TABLE public.word OWNER TO postgres;
ALTER TABLE ONLY  word ADD CONSTRAINT "ID_PKEY" PRIMARY KEY (word,id);

যখন আমি নিম্নলিখিত কমান্ডটি ব্যবহার করে এটি পুনরুদ্ধার করার চেষ্টা করি:

psql -U postgres -h localhost -d word -f word.sql 

এটি আমাকে এই ত্রুটি দেয়:

"শব্দ" টেবিলের জন্য একাধিক প্রাথমিক কী অনুমোদিত নয়

পোস্টগ্র্যাসে আমি কীভাবে একাধিক প্রাথমিক কী ব্যবহার করতে পারি?

উত্তর:


26

পোস্টগ্র্যাসে আমি কীভাবে একাধিক প্রাথমিক কী ব্যবহার করতে পারি?

আপনি পারবেন না। এটি একটি অক্সিমোরন - একটি প্রাথমিক কীটির সংজ্ঞাটি এটি প্রাথমিক কী, একবাক্য। আপনার একের বেশি থাকতে পারে না।

আপনার একাধিক uniqueবাধা থাকতে পারে। আপনার কাছে একটি প্রাথমিক কী থাকতে পারে যাতে একাধিক কলাম রয়েছে (একটি সমন্বিত প্রাথমিক কী)। তবে কোনও টেবিলে আপনার একাধিক প্রাথমিক কী থাকতে পারে না।

তবে, আপনার প্রদর্শিত কোডটি আপনার উল্লেখ করা ত্রুটি তৈরি করে না:

$ psql -U postgres regress <<__END__
CREATE TABLE word(
word CHARACTER VARYING NOT NULL,
id BIGINT NOT NULL,
repeat INTEGER NOT NULL
);
ALTER TABLE public.word OWNER TO postgres;
ALTER TABLE ONLY  word ADD CONSTRAINT "ID_PKEY" PRIMARY KEY (word,id);
__END__
CREATE TABLE
ALTER TABLE
ALTER TABLE
$

অনুমান হিসাবে আপনি ইতিমধ্যে এই টেবিলটি ইতিমধ্যে সংজ্ঞায়িত করেছেন এবং আপনি পূর্ববর্তী ত্রুটিগুলি উপেক্ষা করছেন, তারপরে কেবল সর্বশেষটি দেখান। আমি যদি এই কোডটি পুনরায় চালিত করি তবে আমি আউটপুটটি পাই:

ERROR:  relation "word" already exists
ALTER TABLE
ERROR:  multiple primary keys for table "word" are not allowed

এখানে আসল ত্রুটি অবশ্যই প্রথমটি।

আমি দৃঢ়ভাবে সুপারিশ সবসময় ব্যবহার -v ON_ERROR_STOP=1মধ্যে psql, যেমন:

$ psql -v ON_ERROR_STOP=1 -U postgres regress <<__END__
CREATE TABLE word(
word CHARACTER VARYING NOT NULL,
id BIGINT NOT NULL,
repeat INTEGER NOT NULL
);
ALTER TABLE public.word OWNER TO postgres;
ALTER TABLE ONLY  word ADD CONSTRAINT "ID_PKEY" PRIMARY KEY (word,id);
__END__

ERROR:  relation "word" already exists
$

প্রথম ত্রুটিতে এটি কীভাবে থামবে দেখুন?

(এটি ডিফল্ট হবে তবে এটি পিছনে সামঞ্জস্যতা ভঙ্গ করবে)।

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