Что происходит с таблицей просмотра при вставке новой строки?

#sql

#sql

Вопрос:

Допустим, у меня есть 3 таблицы:

  • Products (Штрих-код [PK], PName, Цена, количество на складе)
  • Saless (SaleID[PK], DeliveryAddress, CreditCard)
  • SaleItems (SaleID [PFK], штрих-код [PFK], Количество)

а затем я создаю таблицу просмотра с именем allproductsales :

 create view allproductsales 
as
    select 
        s.saleid, p.barcode, p.pname 
    from 
        products p 
    left join
        SALEITEMS si ON si.BARCODE = p.BARCODE 
    left join
        saless s ON si.SALEID = s.SALEID;
 

и затем я решаю вставить новую строку в такие продукты, как

 INSERT INTO PRODUCTS 
VALUES (3545322, 'Carrot', 0.10, 34); 
 

и когда я получаю display everything from allproductsales , я вижу там только что вставленную строку без ее SaleID. Мой запрос для создания представления неверен или так и должно быть?

Спасибо.

Ответ №1:

представление — это не таблица, оно не содержит никаких данных, просто представление фактических таблиц. Вы можете думать об этом как о сохраненном запросе, который вы выполняете для получения результирующего набора при каждом запросе представления.

Имея это в виду, что произойдет при выполнении запроса, с помощью которого создается представление? поскольку вы используете соединение по левому краю, это, вероятно, означает, что вы не получаете ни одной соответствующей записи в таблице sales (или нет записи с правильным штрих-кодом в таблице salesItems), поэтому SalesID coloumn равен null

Комментарии:

1. о, точно.. Я понимаю, что представление не является таблицей, но я не знаю, полностью ли я понимаю его поведение с таблицами.