mirror of
https://github.com/spring-projects/spring-petclinic.git
synced 2025-04-24 19:32:48 +00:00
Avoid dropping Postgres schema
The postgres user needs to be an owner of the public schema or a superuser in order to execute the schema.sql for database initialization. To avoid that, two changes are required: - use `CREATE TABLE IF NOT EXISTS` in order to idempotently create the necessary tables - handle conflicts when inserting duplicate data This follows the pattern in use by the src/main/resources/db/mysql/{data,schema.sql} files. Authored-by: Shaan Sapra <shsapra@vmware.com>
This commit is contained in:
parent
423a337543
commit
43beff91a3
2 changed files with 54 additions and 64 deletions
|
@ -1,59 +1,53 @@
|
||||||
INSERT INTO vets VALUES (1, 'James', 'Carter');
|
INSERT INTO vets VALUES (1, 'James', 'Carter') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO vets VALUES (2, 'Helen', 'Leary');
|
INSERT INTO vets VALUES (2, 'Helen', 'Leary') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO vets VALUES (3, 'Linda', 'Douglas');
|
INSERT INTO vets VALUES (3, 'Linda', 'Douglas') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO vets VALUES (4, 'Rafael', 'Ortega');
|
INSERT INTO vets VALUES (4, 'Rafael', 'Ortega') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO vets VALUES (5, 'Henry', 'Stevens');
|
INSERT INTO vets VALUES (5, 'Henry', 'Stevens') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO vets VALUES (6, 'Sharon', 'Jenkins');
|
INSERT INTO vets VALUES (6, 'Sharon', 'Jenkins') ON CONFLICT (id) DO NOTHING;
|
||||||
ALTER SEQUENCE vets_id_seq RESTART WITH 7;
|
|
||||||
|
|
||||||
INSERT INTO specialties VALUES (1, 'radiology');
|
INSERT INTO specialties VALUES (1, 'radiology') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO specialties VALUES (2, 'surgery');
|
INSERT INTO specialties VALUES (2, 'surgery') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO specialties VALUES (3, 'dentistry');
|
INSERT INTO specialties VALUES (3, 'dentistry') ON CONFLICT (id) DO NOTHING;
|
||||||
ALTER SEQUENCE specialties_id_seq RESTART WITH 4;
|
|
||||||
|
|
||||||
INSERT INTO vet_specialties VALUES (2, 1);
|
INSERT INTO vet_specialties VALUES (2, 1) ON CONFLICT (vet_id, specialty_id) DO NOTHING;
|
||||||
INSERT INTO vet_specialties VALUES (3, 2);
|
INSERT INTO vet_specialties VALUES (3, 2) ON CONFLICT (vet_id, specialty_id) DO NOTHING;
|
||||||
INSERT INTO vet_specialties VALUES (3, 3);
|
INSERT INTO vet_specialties VALUES (3, 3) ON CONFLICT (vet_id, specialty_id) DO NOTHING;
|
||||||
INSERT INTO vet_specialties VALUES (4, 2);
|
INSERT INTO vet_specialties VALUES (4, 2) ON CONFLICT (vet_id, specialty_id) DO NOTHING;
|
||||||
INSERT INTO vet_specialties VALUES (5, 1);
|
INSERT INTO vet_specialties VALUES (5, 1) ON CONFLICT (vet_id, specialty_id) DO NOTHING;
|
||||||
|
|
||||||
INSERT INTO types VALUES (1, 'cat');
|
INSERT INTO types VALUES (1, 'cat') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO types VALUES (2, 'dog');
|
INSERT INTO types VALUES (2, 'dog') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO types VALUES (3, 'lizard');
|
INSERT INTO types VALUES (3, 'lizard') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO types VALUES (4, 'snake');
|
INSERT INTO types VALUES (4, 'snake') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO types VALUES (5, 'bird');
|
INSERT INTO types VALUES (5, 'bird') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO types VALUES (6, 'hamster');
|
INSERT INTO types VALUES (6, 'hamster') ON CONFLICT (id) DO NOTHING;
|
||||||
ALTER SEQUENCE types_id_seq RESTART WITH 7;
|
|
||||||
|
|
||||||
INSERT INTO owners VALUES (1, 'George', 'Franklin', '110 W. Liberty St.', 'Madison', '6085551023');
|
INSERT INTO owners VALUES (1, 'George', 'Franklin', '110 W. Liberty St.', 'Madison', '6085551023') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO owners VALUES (2, 'Betty', 'Davis', '638 Cardinal Ave.', 'Sun Prairie', '6085551749');
|
INSERT INTO owners VALUES (2, 'Betty', 'Davis', '638 Cardinal Ave.', 'Sun Prairie', '6085551749') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO owners VALUES (3, 'Eduardo', 'Rodriquez', '2693 Commerce St.', 'McFarland', '6085558763');
|
INSERT INTO owners VALUES (3, 'Eduardo', 'Rodriquez', '2693 Commerce St.', 'McFarland', '6085558763') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO owners VALUES (4, 'Harold', 'Davis', '563 Friendly St.', 'Windsor', '6085553198');
|
INSERT INTO owners VALUES (4, 'Harold', 'Davis', '563 Friendly St.', 'Windsor', '6085553198') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO owners VALUES (5, 'Peter', 'McTavish', '2387 S. Fair Way', 'Madison', '6085552765');
|
INSERT INTO owners VALUES (5, 'Peter', 'McTavish', '2387 S. Fair Way', 'Madison', '6085552765') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO owners VALUES (6, 'Jean', 'Coleman', '105 N. Lake St.', 'Monona', '6085552654');
|
INSERT INTO owners VALUES (6, 'Jean', 'Coleman', '105 N. Lake St.', 'Monona', '6085552654') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO owners VALUES (7, 'Jeff', 'Black', '1450 Oak Blvd.', 'Monona', '6085555387');
|
INSERT INTO owners VALUES (7, 'Jeff', 'Black', '1450 Oak Blvd.', 'Monona', '6085555387') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO owners VALUES (8, 'Maria', 'Escobito', '345 Maple St.', 'Madison', '6085557683');
|
INSERT INTO owners VALUES (8, 'Maria', 'Escobito', '345 Maple St.', 'Madison', '6085557683') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO owners VALUES (9, 'David', 'Schroeder', '2749 Blackhawk Trail', 'Madison', '6085559435');
|
INSERT INTO owners VALUES (9, 'David', 'Schroeder', '2749 Blackhawk Trail', 'Madison', '6085559435') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO owners VALUES (10, 'Carlos', 'Estaban', '2335 Independence La.', 'Waunakee', '6085555487');
|
INSERT INTO owners VALUES (10, 'Carlos', 'Estaban', '2335 Independence La.', 'Waunakee', '6085555487') ON CONFLICT (id) DO NOTHING;
|
||||||
ALTER SEQUENCE owners_id_seq RESTART WITH 11;
|
|
||||||
|
|
||||||
INSERT INTO pets VALUES (1, 'Leo', '2000-09-07', 1, 1);
|
INSERT INTO pets VALUES (1, 'Leo', '2000-09-07', 1, 1) ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO pets VALUES (2, 'Basil', '2002-08-06', 6, 2);
|
INSERT INTO pets VALUES (2, 'Basil', '2002-08-06', 6, 2) ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO pets VALUES (3, 'Rosy', '2001-04-17', 2, 3);
|
INSERT INTO pets VALUES (3, 'Rosy', '2001-04-17', 2, 3) ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO pets VALUES (4, 'Jewel', '2000-03-07', 2, 3);
|
INSERT INTO pets VALUES (4, 'Jewel', '2000-03-07', 2, 3) ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO pets VALUES (5, 'Iggy', '2000-11-30', 3, 4);
|
INSERT INTO pets VALUES (5, 'Iggy', '2000-11-30', 3, 4) ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO pets VALUES (6, 'George', '2000-01-20', 4, 5);
|
INSERT INTO pets VALUES (6, 'George', '2000-01-20', 4, 5) ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO pets VALUES (7, 'Samantha', '1995-09-04', 1, 6);
|
INSERT INTO pets VALUES (7, 'Samantha', '1995-09-04', 1, 6) ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO pets VALUES (8, 'Max', '1995-09-04', 1, 6);
|
INSERT INTO pets VALUES (8, 'Max', '1995-09-04', 1, 6) ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO pets VALUES (9, 'Lucky', '1999-08-06', 5, 7);
|
INSERT INTO pets VALUES (9, 'Lucky', '1999-08-06', 5, 7) ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO pets VALUES (10, 'Mulligan', '1997-02-24', 2, 8);
|
INSERT INTO pets VALUES (10, 'Mulligan', '1997-02-24', 2, 8) ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO pets VALUES (11, 'Freddy', '2000-03-09', 5, 9);
|
INSERT INTO pets VALUES (11, 'Freddy', '2000-03-09', 5, 9) ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO pets VALUES (12, 'Lucky', '2000-06-24', 2, 10);
|
INSERT INTO pets VALUES (12, 'Lucky', '2000-06-24', 2, 10) ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO pets VALUES (13, 'Sly', '2002-06-08', 1, 10);
|
INSERT INTO pets VALUES (13, 'Sly', '2002-06-08', 1, 10) ON CONFLICT (id) DO NOTHING;
|
||||||
ALTER SEQUENCE pets_id_seq RESTART WITH 14;
|
|
||||||
|
|
||||||
INSERT INTO visits VALUES (1, 7, '2010-03-04', 'rabies shot');
|
INSERT INTO visits VALUES (1, 7, '2010-03-04', 'rabies shot') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO visits VALUES (2, 8, '2011-03-04', 'rabies shot');
|
INSERT INTO visits VALUES (2, 8, '2011-03-04', 'rabies shot') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO visits VALUES (3, 8, '2009-06-04', 'neutered');
|
INSERT INTO visits VALUES (3, 8, '2009-06-04', 'neutered') ON CONFLICT (id) DO NOTHING;
|
||||||
INSERT INTO visits VALUES (4, 7, '2008-09-04', 'spayed');
|
INSERT INTO visits VALUES (4, 7, '2008-09-04', 'spayed') ON CONFLICT (id) DO NOTHING;
|
||||||
ALTER SEQUENCE visits_id_seq RESTART WITH 5;
|
|
||||||
|
|
|
@ -1,33 +1,29 @@
|
||||||
-- Wipe everything before creating the tables to make the script idempotent.
|
CREATE TABLE IF NOT EXISTS vets (
|
||||||
DROP SCHEMA public cascade;
|
|
||||||
CREATE SCHEMA public;
|
|
||||||
|
|
||||||
CREATE TABLE vets (
|
|
||||||
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||||
first_name TEXT,
|
first_name TEXT,
|
||||||
last_name TEXT
|
last_name TEXT
|
||||||
);
|
);
|
||||||
CREATE INDEX ON vets (last_name);
|
CREATE INDEX ON vets (last_name);
|
||||||
|
|
||||||
CREATE TABLE specialties (
|
CREATE TABLE IF NOT EXISTS specialties (
|
||||||
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||||
name TEXT
|
name TEXT
|
||||||
);
|
);
|
||||||
CREATE INDEX ON specialties (name);
|
CREATE INDEX ON specialties (name);
|
||||||
|
|
||||||
CREATE TABLE vet_specialties (
|
CREATE TABLE IF NOT EXISTS vet_specialties (
|
||||||
vet_id INT NOT NULL REFERENCES vets (id),
|
vet_id INT NOT NULL REFERENCES vets (id),
|
||||||
specialty_id INT NOT NULL REFERENCES specialties (id),
|
specialty_id INT NOT NULL REFERENCES specialties (id),
|
||||||
UNIQUE (vet_id, specialty_id)
|
UNIQUE (vet_id, specialty_id)
|
||||||
);
|
);
|
||||||
|
|
||||||
CREATE TABLE types (
|
CREATE TABLE IF NOT EXISTS types (
|
||||||
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||||
name TEXT
|
name TEXT
|
||||||
);
|
);
|
||||||
CREATE INDEX ON types (name);
|
CREATE INDEX ON types (name);
|
||||||
|
|
||||||
CREATE TABLE owners (
|
CREATE TABLE IF NOT EXISTS owners (
|
||||||
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||||
first_name TEXT,
|
first_name TEXT,
|
||||||
last_name TEXT,
|
last_name TEXT,
|
||||||
|
@ -37,7 +33,7 @@ CREATE TABLE owners (
|
||||||
);
|
);
|
||||||
CREATE INDEX ON owners (last_name);
|
CREATE INDEX ON owners (last_name);
|
||||||
|
|
||||||
CREATE TABLE pets (
|
CREATE TABLE IF NOT EXISTS pets (
|
||||||
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||||
name TEXT,
|
name TEXT,
|
||||||
birth_date DATE,
|
birth_date DATE,
|
||||||
|
@ -47,7 +43,7 @@ CREATE TABLE pets (
|
||||||
CREATE INDEX ON pets (name);
|
CREATE INDEX ON pets (name);
|
||||||
CREATE INDEX ON pets (owner_id);
|
CREATE INDEX ON pets (owner_id);
|
||||||
|
|
||||||
CREATE TABLE visits (
|
CREATE TABLE IF NOT EXISTS visits (
|
||||||
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||||
pet_id INT NOT NULL REFERENCES pets (id),
|
pet_id INT NOT NULL REFERENCES pets (id),
|
||||||
visit_date DATE,
|
visit_date DATE,
|
||||||
|
|
Loading…
Reference in a new issue