кодесурса

PostgreSQL Create Table: создайте таблицу, которая будет отклонять любое удаление и любые обновления

script1adsense2code
script1adsense3code

19. Напишите оператор SQL для создания таблицы сотрудников, включая столбцы employee_id, first_name, last_name, job_id, salary, и убедитесь, что столбец employee_id не содержит повторяющихся значений во время вставки, а столбец внешнего ключа job_id, на который есть ссылки по столбцу job_id таблицы заданий, может содержать только те значения, которые существуют в таблице заданий. Особенность этого утверждения заключается в том, что действия ON DELETE NO ACTION и ON UPDATE NO ACTION будут отклонять удаление и любые обновления.

Предположим, что ниже приведена структура двух табличных заданий.

CREATE TABLE IF NOT EXISTS jobs ( 
JOB_ID INTEGER NOT NULL UNIQUE PRIMARY KEY, 
JOB_TITLE varchar(35) NOT NULL DEFAULT ' ', 
MIN_SALARY decimal(6,0) DEFAULT 8000, 
MAX_SALARY decimal(6,0) DEFAULT NULL
);

Indexes:
    "jobs_pkey" PRIMARY KEY, btree (job_id)

Пример решения:

Код:

CREATE TABLE employees ( 
EMPLOYEE_ID decimal(6,0) NOT NULL PRIMARY KEY, 
FIRST_NAME varchar(20) DEFAULT NULL, 
LAST_NAME varchar(25) NOT NULL, 
JOB_ID INTEGER NOT NULL, 
SALARY decimal(8,2) DEFAULT NULL, 
FOREIGN KEY(JOB_ID) 
REFERENCES  jobs(JOB_ID)
ON DELETE NO ACTION 
ON UPDATE NO ACTION
);

Выход:

 postgres = # CREATE TABLE сотрудников (
postgres (# EMPLOYEE_ID decimal (6,0) NOT NULL ПЕРВИЧНЫЙ КЛЮЧ,
postgres (# FIRST_NAME varchar (20) DEFAULT NULL,
postgres (# LAST_NAME varchar (25) NOT NULL,
postgres (# JOB_ID INTEGER,
postgres (# SALARY decimal (8,2) DEFAULT NULL,
postgres (# FOREIGN KEY (JOB_ID)
postgres (# ССЫЛКИ вакансии (JOB_ID)
postgres (# НА УДАЛИТЬ НЕТ ДЕЙСТВИЙ
postgres (# НА ОБНОВЛЕНИИ НЕТ ДЕЙСТВИЙ
postgres (#);
СОЗДАТЬ СТОЛ

Вот команда, чтобы увидеть структуру созданной таблицы:

postgres=# \d employees
                      Table "public.employees"
   Column    |         Type          |            Modifiers
-------------+-----------------------+---------------------------------
 employee_id | numeric(6,0)          | not null
 first_name  | character varying(20) | default NULL::character varying
 last_name   | character varying(25) | not null
 job_id      | integer               |
 salary      | numeric(8,2)          | default NULL::numeric
Indexes:
    "employees_pkey" PRIMARY KEY, btree (employee_id)
Foreign-key constraints:
    "employees_job_id_fkey" FOREIGN KEY (job_id) REFERENCES jobs(job_id)

Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.

Предыдущий: Напишите оператор SQL для создания таблицы сотрудников, включая столбцы employee_id, first_name, last_name, job_id, salary, и убедитесь, что столбец employee_id не содержит повторяющихся значений во время вставки, и столбец внешнего ключа job_id, на который есть ссылки по столбцу job_id таблицы заданий, может содержать только те значения, которые существуют в таблице заданий. Особенность оператора заключается в том, что действие ON DELETE SET NULL установит значения столбца внешнего ключа в дочерней таблице (employee) в NULL, когда запись в родительской таблице (jobs) будет удалена, с условием, что столбец внешнего ключа в дочерней таблице должны принимать значения NULL, а действие ON UPDATE SET NULL сбрасывает значения в строках в дочерней таблице (employee) в значения NULL при обновлении строк в родительской таблице (jobs).
Далее: Таблица изменений PostgreSQL - упражнения, практика, решение

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code