-- убрать ограничение уникальности для поля «Название предприятия»;
ALTER TABLE company DROP CONSTRAINT cy_name_not_null;
-- изменить значение по умолчанию для поля «Город»
ALTER TABLE ONLY company ALTER COLUMN cy_city SET DEFAULT 'Marseille';
-- увеличить количество символов для ввода в поле «Город»
ALTER TABLE company ALTER COLUMN cy_city SET DATA TYPE varchar(50);
-- добавить обязательное поле «Страна» (последовательность действий: создать поле, ввести значения, сделать поле обязательным)
ALTER TABLE company ADD COLUMN cy_country text;
UPDATE company
SET cy_country = 'France';
ALTER TABLE company ADD CONSTRAINT cy_name_not_null CHECK (cy_name IS NOT NULL);
-- расширить диапазон значений поля «Объем»
ALTER TABLE commande DROP CONSTRAINT commande_ce_volume_check;
ALTER TABLE commande ADD CONSTRAINT commande_ce_volume_check CHECK(ce_volume < 10000 AND ce_volume > 0);
--- сделать необязательным поле «Стоимость»
ALTER TABLE commande ALTER COLUMN ce_price DROP NOT NULL;
-- добавить необязательное поле «Статус заказа» с возможными значениями: ‘Принят’, ‘В работе’, ‘Выполнен’)
ALTER TABLE commande ADD COLUMN ce_status text CHECK (ce_status = NULL OR ce_status = 'accepted' OR ce_status = 'in progress' OR ce_status = 'copmleted');
-- ввести значение статуса для каждого заказа
UPDATE commande
SET ce_status = 'accepted'
WHERE ce_volume > 100;
UPDATE commande
SET ce_status = 'in progress'
WHERE ce_volume <= 100;
SELECT * FROM commande;
-- изменить структуру таблицы «Заказ», выделив справочную таблицу «Статус» (код статуса, название статуса)
CREATE TABLE Reference
(
re_id int4 PRIMARY KEY,
status text
);
INSERT INTO Reference(re_id, status)
VALUES (0, 'accepted');
INSERT INTO Reference(re_id, status)
VALUES (1, 'in progress');
INSERT INTO Reference(re_id, status)
VALUES (2, 'copmleted');
INSERT INTO Reference(re_id, status)
VALUES (3, 'undefined');
ALTER TABLE commande ADD COLUMN re_id int4;
UPDATE commande
SET re_id = '0'
WHERE ce_status = 'accepted'
UPDATE commande
SET re_id = '1'
WHERE ce_status = 'in progress'
UPDATE commande
SET re_id = '2'
WHERE ce_status = 'copmleted'
UPDATE commande
SET re_id = '3'
WHERE ce_status = 'undefined'
ALTER TABLE commande
ADD FOREIGN KEY (re_id)
REFERENCES reference (re_id);
ALTER TABLE commande DROP COLUMN ce_status;
SELECT * FROM company;
SELECT * FROM commande;
SELECT * FROM reference;
SELECT * FROM execution;