مرکزی مواد پر جائیں
ماڈیول 9 · سبق 3 از 4کورس میں 35/57~10 min
ماڈیول اسباق (3/4)

ڈھانچہ تبدیل کرنا: ALTER TABLE

درخواست کی ضروریات وقت کے ساتھ بدلتی رہتی ہیں، اور ڈیٹا بیس کو برقرار رکھنا چاہیے۔ ALTER TABLE ایک (انتہائی ورسٹائل) کمانڈ ہے جو موجودہ ٹیبل اسکیموں میں ترمیم کرنے کے لیے وقف ہے _بغیر انہیں چھوڑے (اندر ڈیٹا کو خطرے میں ڈالے)۔

کالموں میں ترمیم کرنا (ADD / DROP / ALTER)

کالم شامل کرنے کے لیے احتیاط کی ضرورت ہے۔ اگر ٹیبل میں پہلے سے ڈیٹا موجود ہے تو، "NOT NULL" کالم شامل کرنے سے Postgres میں ایک خرابی پیدا ہو جائے گی: اسے پرانی قطاروں میں کیا ڈالنا چاہیے؟ آپ کو ایک DEFAULT سے وابستہ کرنا ضروری ہے۔

SQL
-- Aggiungiamo una colonna
ALTER TABLE users ADD COLUMN age INTEGER; -- Ok, sarà NULL ovunque

-- Aggiungiamo NOT NULL, quindi diamogli un deafult
ALTER TABLE users ADD COLUMN active BOOLEAN NOT NULL DEFAULT true;

-- Cancellare una colonna (ATTENZIONE! i dati andranno persi)
ALTER TABLE users DROP COLUMN age;

صرف شامل کرنا یا ہٹانا نہیں: آپ کو اکثر کالم کے type یا اس کی رکاوٹوں میں سے ایک کو دوبارہ ترتیب دینے کی ضرورت ہوتی ہے۔

SQL
-- Cambia il tipo di dato (postgreSQL farà un 'cast' dei dati esistenti se possibile)
ALTER TABLE users ALTER COLUMN username TYPE VARCHAR(100);

-- Aggiunge il vincolo NOT NULL
ALTER TABLE users ALTER COLUMN username SET NOT NULL;

-- Rimuove il vincolo NOT NULL (ritorna ad accettare null)
ALTER TABLE users ALTER COLUMN username DROP NOT NULL;

رن ٹائم میں رکاوٹیں شامل کرنا

بالکل اسی طرح جیسے CREATE TABLE کے ساتھ، ہم ALTER TABLE کا استعمال کر سکتے ہیں ایک CONSTRAINT کو ایک ٹیبل سے منسلک کرنے کے لیے جو پہلے سے پروڈکشن ایپ میں زیر استعمال ہے۔

SQL
-- Aggiungi un nuovo Foreign Key
ALTER TABLE orders
  ADD CONSTRAINT fk_order_status FOREIGN KEY (status_id) REFERENCES statuses(id);

-- Aggiungi un CHECK
ALTER TABLE products
  ADD CONSTRAINT price_positive CHECK (price > 0);

-- E per distruggerli?
ALTER TABLE products DROP CONSTRAINT price_positive;

نام بدلنا

کالم اور ٹیبل دونوں کا نام تبدیل کیا جا سکتا ہے:

SQL
ALTER TABLE users RENAME TO auth_users;
ALTER TABLE auth_users RENAME COLUMN username TO login_name;

اسے آزمائیں

ورزش#sql.m9.l3.e1
کوششیں: 0لوڈ ہو رہا ہے…

'مصنوعات' ٹیبل میں فی الحال ایک 'نام' کالم ہے۔ 'نام' کالم کا نام 'عنوان' میں تبدیل کرکے ٹیبل میں ترمیم کریں۔ RENAME COLUMN آپریشن استعمال کریں۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

نحو: ٹیبل کو تبدیل کریں ... کالم کا نام تبدیل کریں ... سے ...

3 کوششوں کے بعد حل دستیاب ہے۔

پوسٹ پروڈکشن میں رکاوٹیں شامل کرنا

ورزش#sql.m9.l3.e2
کوششیں: 0لوڈ ہو رہا ہے…

'مصنوعات' کے جدول میں ایک چیک کی رکاوٹ (جس کا نام 'verifica_prezzo' ہے) شامل کر کے ترمیم کریں جس کے لیے قیمت (کالم 'قیمت') کا 0 سے زیادہ ہونا ضروری ہے۔ اصل کالم کو چھوڑے بغیر رکاوٹ کو شامل کیا جانا چاہیے۔

ایڈیٹر لوڈ ہو رہا ہے…
اشارہ دکھائیں۔

نحو: ALTER TABLE جدول میں رکاوٹ کا نام شامل کریں چیک (...)

3 کوششوں کے بعد حل دستیاب ہے۔