Kodulehed
[383] - Andmebaasid II (ITI0207) (sügis 2022)
Esiletöstetud Kiirvalik
Lisainfo Kõige olulisemate tegevuste kiirvalik. Failide saatmiseks valige Vastamine alt sobiv ülesanne.
Üldist
Materjalid
LisainfoMaterjalide kataloogid.
Värvilised mummud tähistavad hinnangulist kataloogide lugemise vajadust. Roheline - suurim, kollane - keskmine, punane või mummuta - väikseim
Isiklik
Lisainfo Info ainult Sulle - teised kasutajad seda ei näe
Abi
Lisainfo Võimalus küsida õppejõult abi (nagu foorum, kus saab küsida küsimusi ja kommenteerida vastuseid)
Mitmesugust
Abi / Kasutajatugi / PostgreSQL

Avalikud küsimused ja vastused:

Küsimuste teemade nimekiri

Erki Eessaar (10.11.2022 17:11):
Loon PostgreSQLis uue andmebaasi, kuid selles on kellegi teise loodud tabelid, domeenid või muud andmebaasiobjektid? Miks see nii on ja mida teha?
Vastus (11.11.2022 14:28):
PostgreSQLis luuakse uus andmebaas tehes koopia mallandmebaasist (template1). Ülikasutaja õigustes kasutaja saab template1 andmebaasi muuta. Kõik sellesse lisatud andmebaasiobjektid tekivad peale lisamist selle malli põhjal loodud andmebaasidesse.

Palun ärge lisage oma andmebaasiobjekte template1 andmebaasi! Kui olete seda kogemata teinud, siis kustutage need sealt. Kui avastate peale andmebaasi loomist enda andmebaasist kellegi teise loodud andmebaasiobjektid, siis tuleb need kustutada.

Järgnevad käsud saab käivitada psqlis (pgAdminis valige selleks andmebaas ja siis menüüst Tools=>PSQL Tool).

Käsk 1: Kustuta kõik kasutajate skeemides olevad tabelid ja nendest sõltuvad andmebaasiobjektid (nt vaated, rutiinid, trigerid).

SELECT format('DROP TABLE %1$I.%2$I CASCADE;', table_schema, table_name) AS statements
FROM INFORMATION_SCHEMA.tables AS t INNER JOIN INFORMATION_SCHEMA.schemata AS s ON t.table_schema=s.schema_name
WHERE schema_name='public'
OR schema_owner<>'postgres'
\gexec


Käsk 2: Kustuta kõik kasutajate skeemides olevad domeenid.

SELECT format('DROP DOMAIN %1$I.%2$I CASCADE;', domain_schema, domain_name) AS statements
FROM INFORMATION_SCHEMA.domains AS d INNER JOIN INFORMATION_SCHEMA.schemata AS s ON d.domain_schema=s.schema_name
WHERE schema_name='public'
OR schema_owner<>'postgres'
\gexec

Käsk 3: Kustuta kõik kasutajate skeemid, v.a. public.

SELECT format('DROP SCHEMA %1$I CASCADE;', schema_name) AS statements
FROM INFORMATION_SCHEMA.schemata AS s
WHERE schema_name<>'public'
AND schema_owner<>'postgres'
\gexec

gexec käsk võimaldab päringuga koostatud SQL laused automaatselt käivitada.

Hinda vastust:

Keskmine hinne : Pole veel hinnanguid!