From 9cb172acd318e3b1d5d0d25956eef113f3c1514c Mon Sep 17 00:00:00 2001 From: pashko Date: Sun, 16 Feb 2025 19:52:52 +0800 Subject: [PATCH] Update how_to_update_views.md --- how_to_update_views.md | 56 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/how_to_update_views.md b/how_to_update_views.md index aff4fd3..5adaa71 100644 --- a/how_to_update_views.md +++ b/how_to_update_views.md @@ -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. Получить корректный порядок удаления @@ -104,4 +129,33 @@ ORDER BY object_type DESC; ### 4. Удалить полученным скриптом из п.3 представление ```sql DROP VIEW IF EXISTS public.document_details CASCADE; -``` \ No newline at end of file +``` + +### 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; +```