parent
381e175847
commit
9b3c81c281
39
issues/1582/schema.sql
Normal file
39
issues/1582/schema.sql
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
||||||
|
|
||||||
|
-- Table without any dependencies
|
||||||
|
CREATE TABLE IF NOT EXISTS public.table_1 (
|
||||||
|
id uuid DEFAULT public.uuid_generate_v4() NOT NULL PRIMARY KEY
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Table that depends on table_1
|
||||||
|
CREATE TABLE IF NOT EXISTS public.table_2 (
|
||||||
|
id uuid DEFAULT public.uuid_generate_v4() NOT NULL,
|
||||||
|
table_1_id uuid NOT NULL REFERENCES public.table_1(id),
|
||||||
|
-- Add constraints / uniques here if needed. Will auto apply to all partitions.
|
||||||
|
PRIMARY KEY (id, table_1_id)
|
||||||
|
)
|
||||||
|
PARTITION BY HASH (table_1_id);
|
||||||
|
|
||||||
|
-- Generate partition tables.
|
||||||
|
-- No clue if this works on other SQL implementations than PostgreSQL.
|
||||||
|
DO $$
|
||||||
|
DECLARE
|
||||||
|
counter integer := 0;
|
||||||
|
BEGIN
|
||||||
|
WHILE counter < 128
|
||||||
|
LOOP
|
||||||
|
EXECUTE('CREATE TABLE IF NOT EXISTS public.table_2_p_hash_p' || counter || ' PARTITION OF public.table_2 FOR VALUES WITH (MODULUS 128, REMAINDER ' || counter || ');');
|
||||||
|
counter := counter + 1;
|
||||||
|
END LOOP;
|
||||||
|
END$$;
|
||||||
|
|
||||||
|
-- Table that depends on table_1 and table_2.
|
||||||
|
-- Foreign keys to table_2 are through the partitions
|
||||||
|
CREATE TABLE IF NOT EXISTS public.table_3 (
|
||||||
|
id uuid DEFAULT public.uuid_generate_v4() NOT NULL PRIMARY KEY,
|
||||||
|
-- FK to table_1 only needed so that we can FK to table_2
|
||||||
|
table_1_id uuid REFERENCES public.table_1(id) NOT NULL,
|
||||||
|
table_2_id uuid NOT NULL,
|
||||||
|
FOREIGN KEY (table_2_id, table_1_id) REFERENCES public.table_2(id, table_1_id)
|
||||||
|
);
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user