summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2016-10-06 09:52:18 +0200
committerYorhel <git@yorhel.nl>2016-10-06 09:52:20 +0200
commitd2d48920f441f6c0ab633cf9aa5ed4a8dd8475f1 (patch)
tree1eb7c104b83d57e42828f58b8f6152ca499bb4a6 /sql
parent488b88c3cf1ccce90a05144dad4ea4e7601f57e8 (diff)
SQL: Add ON DELETE clause to foreign keys
This makes it easier to remove a complete package or system when debugging.
Diffstat (limited to 'sql')
-rw-r--r--sql/schema.sql6
-rw-r--r--sql/update-2016-10-06.sql3
2 files changed, 6 insertions, 3 deletions
diff --git a/sql/schema.sql b/sql/schema.sql
index f597797..ff264a8 100644
--- a/sql/schema.sql
+++ b/sql/schema.sql
@@ -13,7 +13,7 @@ CREATE TABLE contents (
CREATE TABLE packages (
id SERIAL PRIMARY KEY,
- system integer NOT NULL REFERENCES systems(id),
+ system integer NOT NULL REFERENCES systems(id) ON DELETE CASCADE,
category varchar,
name varchar NOT NULL,
UNIQUE(system, name, category) -- Note the order, lookups on (system,name) are common
@@ -21,14 +21,14 @@ CREATE TABLE packages (
CREATE TABLE package_versions (
id SERIAL PRIMARY KEY,
- package integer NOT NULL REFERENCES packages(id),
+ package integer NOT NULL REFERENCES packages(id) ON DELETE CASCADE,
version varchar NOT NULL,
released date NOT NULL,
UNIQUE(package, version)
);
CREATE TABLE man (
- package integer NOT NULL REFERENCES package_versions(id),
+ package integer NOT NULL REFERENCES package_versions(id) ON DELETE CASCADE,
name varchar NOT NULL,
section varchar NOT NULL,
filename varchar NOT NULL,
diff --git a/sql/update-2016-10-06.sql b/sql/update-2016-10-06.sql
new file mode 100644
index 0000000..ff4b394
--- /dev/null
+++ b/sql/update-2016-10-06.sql
@@ -0,0 +1,3 @@
+ALTER TABLE packages DROP CONSTRAINT packages_system_fkey, ADD CONSTRAINT packages_system_fkey FOREIGN KEY(system) REFERENCES systems(id) ON DELETE CASCADE;
+ALTER TABLE package_versions DROP CONSTRAINT package_versions_package_fkey, ADD CONSTRAINT package_versions_package_fkey FOREIGN KEY(package) REFERENCES packages(id) ON DELETE CASCADE;
+ALTER TABLE man DROP CONSTRAINT man_package_fkey, ADD CONSTRAINT man_package_fkey FOREIGN KEY(package) REFERENCES package_versions(id) ON DELETE CASCADE;