উত্তর:
( আপডেট - মন্তব্য করা লোকদের ধন্যবাদ )
ধরুন আপনার নামের একটি সারণী রয়েছে test1
, যার কাছে আপনি একটি স্বয়ং-বর্ধনকারী, প্রাথমিক-কী id
(সারোগেট) কলাম যুক্ত করতে চান। পোস্টগ্র্রেএসকিউএল এর সাম্প্রতিক সংস্করণগুলিতে নিম্নলিখিত কমান্ডটি পর্যাপ্ত হতে হবে:
ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY;
PostgreSQL এর পুরানো সংস্করণগুলিতে (8.x এর পূর্বে?) আপনাকে সমস্ত নোংরা কাজ করতে হয়েছিল। নিম্নলিখিত আদেশের ক্রমটি কৌশলটি করা উচিত:
ALTER TABLE test1 ADD COLUMN id INTEGER;
CREATE SEQUENCE test_id_seq OWNED BY test1.id;
ALTER TABLE test ALTER COLUMN id SET DEFAULT nextval('test_id_seq');
UPDATE test1 SET id = nextval('test_id_seq');
আবার পোস্টগ্রিসের সাম্প্রতিক সংস্করণগুলিতে এটি উপরের একক কমান্ডের সমান।
ADD PRIMARY KEY
একটি NOT NULL
সীমাবদ্ধতা তৈরি করেছে (9.3 পোস্টগ্রেসে পরীক্ষিত)।
ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY;
ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY;
আপনার যা প্রয়োজন তা হ'ল:
id
কলামক্রেডিট দেওয়া হয়েছে @resnyanskiy যিনি একটি মন্তব্যে এই উত্তর দিয়েছেন।
ALTER TABLE <table> DROP CONSTRAINT <pkey_name>;
V10 এ একটি পরিচয় কলাম ব্যবহার করতে,
ALTER TABLE test
ADD COLUMN id { int | bigint | smallint}
GENERATED { BY DEFAULT | ALWAYS } AS IDENTITY PRIMARY KEY;
পরিচয় কলামগুলির ব্যাখ্যার জন্য, https://blog.2ndquadrant.com/postgresql-10-identity-col الm/ দেখুন ।
উত্সাহ এবং জেনারেটেড সর্বদা জেনারেটেডের মধ্যে পার্থক্যের জন্য, https://www.cybertec-postgresql.com/en/sequences-gains-and-pitfalls/ দেখুন ।
ক্রম পরিবর্তন করার জন্য, https://popsql.io/learn-sql/postgresql/how-to-alter-sequence-in-postgresql/ দেখুন ।
SQL Error [23502]: ERROR: column "id" contains null values
আমি এখানে অবতরণ করেছি কারণ আমিও এরকম কিছু খুঁজছিলাম। আমার ক্ষেত্রে, আমি লক্ষ্য টেবিলটিতে সারি আইডির নির্ধারণের সময় অনেকগুলি কলাম সহ স্টেজিং টেবিলের একটি সেট থেকে ডেটা অনুলিপি করছিলাম। উপরোক্ত পদ্ধতির একটি বৈকল্পিক যা আমি ব্যবহার করেছি। আমি আমার লক্ষ্য সারণির শেষে সিরিয়াল কলামটি যুক্ত করেছি। এইভাবে সন্নিবেশ বিবৃতিতে এর জন্য আমার কাছে কোনও স্থানধারক লাগবে না। তারপরে লক্ষ্য টেবিলের একটি সাধারণ নির্বাচন * স্বয়ংক্রিয়ভাবে এই কলামটিকে জনপ্রিয় করে তুলেছে। এখানে পোস্টগ্র্রেএসকিউএল 9.6.4 এ আমি দুটি এসকিউএল বিবৃতি ব্যবহার করেছি।
ALTER TABLE target ADD COLUMN some_column SERIAL;
INSERT INTO target SELECT * from source;