Будет ли SQL представление, отфильтрованное по большому времени и дате, всегда предоставлять текущие данные? - PullRequest
0 голосов
/ 18 апреля 2020

Если я создаю сегодня представление для таблицы, которая постоянно получает данные, например, используя фильтрацию даты с 1900 и 2100 гг., Будет ли эта «копия» обрезана до момента создания представления или после его фильтрации будет ли он показывать текущие данные пользователям, которые могут получить к ним доступ?

1 Ответ

1 голос
/ 18 апреля 2020

Если я сегодня создам представление для таблицы, которая непрерывно получает данные, [...] будет ли она отображать текущие данные пользователям, которые могут получить к ним доступ?

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

Вот небольшая демонстрация , демонстрирующая это поведение:

create table mytable (id int, val varchar(5));
insert into mytable(id, val) values(1, 'foo')

create view myview as select id, val from mytable;
select * from myview;
id | val
-: | :--
 1 | foo
insert into mytable values(2, 'bar');
select * from myview;
id | val
-: | :--
 1 | foo
 2 | bar
...