পোস্টগ্র্যাসে আমি কীভাবে একাধিক প্রাথমিক কী ব্যবহার করতে পারি?
আপনি পারবেন না। এটি একটি অক্সিমোরন - একটি প্রাথমিক কীটির সংজ্ঞাটি এটি প্রাথমিক কী, একবাক্য। আপনার একের বেশি থাকতে পারে না।
আপনার একাধিক 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
$
প্রথম ত্রুটিতে এটি কীভাবে থামবে দেখুন?
(এটি ডিফল্ট হবে তবে এটি পিছনে সামঞ্জস্যতা ভঙ্গ করবে)।