Update how_to_update_views.md

This commit is contained in:
pashko 2025-02-16 19:52:52 +08:00
parent b93dd4ba5e
commit 9cb172acd3

View File

@ -64,6 +64,31 @@ WHERE c.relkind = 'v'
AND c.relname IN ('document_details', 'author_documents');
```
получим вывод
```csv
"create_script"
"CREATE OR REPLACE VIEW public.author_documents AS SELECT a.name AS author_name,
a.email,
dd.doc_id,
dd.title,
dd.type_name,
dd.content,
dd.updated_at
FROM authors a
JOIN document_authors da ON a.author_id = da.author_id
JOIN document_details dd ON da.doc_id = dd.doc_id;;"
"CREATE OR REPLACE VIEW public.document_details AS SELECT d.doc_id,
d.title,
dt.type_name,
ldv.content,
ldv.updated_at,
d.created_at
FROM documents d
JOIN document_types dt ON d.type_id = dt.type_id
LEFT JOIN latest_document_versions ldv ON d.doc_id = ldv.doc_id;;"
```
### 3. Получить корректный порядок удаления
@ -105,3 +130,32 @@ ORDER BY object_type DESC;
```sql
DROP VIEW IF EXISTS public.document_details CASCADE;
```
### 5. Обновляем document_details с измененной структурой
```sql
CREATE OR REPLACE VIEW public.document_details AS
SELECT
d.doc_id,
d.title,
dt.type_name,
ldv.content,
ldv.updated_at,
d.created_at -- Добавили поле created_at
FROM documents d
JOIN document_types dt ON d.type_id = dt.type_id
LEFT JOIN latest_document_versions ldv ON d.doc_id = ldv.doc_id;
```
### 6. Восстанавливаем необходимое, скриптами из п.2
```sql
CREATE OR REPLACE VIEW public.author_documents AS SELECT a.name AS author_name,
a.email,
dd.doc_id,
dd.title,
dd.type_name,
dd.content,
dd.updated_at
FROM authors a
JOIN document_authors da ON a.author_id = da.author_id
JOIN document_details dd ON da.doc_id = dd.doc_id;
```