Учебно-практическое пособие москва 2017 ббк


ALTER TABLE tickets_directions



Pdf көрінісі
бет168/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   164   165   166   167   168   169   170   171   ...   243
Байланысты:
Язык SQL. Базовый курс

ALTER TABLE tickets_directions
ADD COLUMN last_ticket_time timestamp;
ALTER TABLE tickets_directions
ADD COLUMN tickets_num integer DEFAULT 0;
Поскольку PostgreSQL не требует обязательного создания первичного ключа, то не
будем создавать его. Это не помешает нам однозначно идентифицировать строки в
таблице tickets_directions.
Поскольку в команде UPDATE нет предложения WHERE, в котором было бы условие,
ограничивающее множество обновляемых строк, то будут обновлены все строки таб-
лицы — во все будет записано значение 0 в столбец tickets_num.
Для того чтобы не усложнять изложение материала, создадим временную таблицу,
являющуюся аналогом таблицы «Перелеты» (ticket_flights), однако без внешних клю-
чей. Поэтому мы сможем добавлять в нее строки, не заботясь о добавлении строк
в таблицы «Билеты» (tickets) и «Бронирования» (bookings). Тем не менее, первич-
ный ключ все же создадим, чтобы продемонстрировать, что в случае попытки ввода
строк с дубликатными значениями первичного ключа значения счетчиков в таблице
tickets_directions наращиваться не будут.
CREATE TEMP TABLE ticket_flights_tmp AS
SELECT * FROM ticket_flights WITH NO DATA;
ALTER TABLE ticket_flights_tmp
ADD PRIMARY KEY ( ticket_no, flight_id );
Теперь представим команду, которая и будет добавлять новую запись о про-
даже билета и увеличивать значение счетчика проданных билетов в таблице
tickets_directions.
WITH sell_ticket AS
( INSERT INTO ticket_flights_tmp
( ticket_no, flight_id, fare_conditions, amount )
VALUES ( '1234567890123', 30829, 'Economy', 12800 )
RETURNING *
)
UPDATE tickets_directions td
SET last_ticket_time = CURRENT_TIMESTAMP,
tickets_num = tickets_num + 1
WHERE ( td.departure_city, td.arrival_city ) =


Достарыңызбен бөлісу:
1   ...   164   165   166   167   168   169   170   171   ...   243




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет