Projekt

Allgemein

Profil

Herunterladen (2,88 KB) Statistiken
| Zweig: | Markierung: | Revision:
-- @tag: add_variants
-- @description: Neue Tabllen für Variantenartikel
-- @depends: release_3_8_0
-- @ignore: 0

CREATE TYPE part_variant_type AS ENUM ('single', 'parent_variant', 'variant');
ALTER TABLE parts ADD COLUMN variant_type part_variant_type DEFAULT 'single' NOT NULL;

CREATE TABLE parts_parent_variant_id_parts_variant_id (
parent_variant_id INTEGER NOT NULL REFERENCES parts(id),
variant_id INTEGER NOT NULL UNIQUE REFERENCES parts(id),
PRIMARY KEY (parent_variant_id, variant_id)
);

CREATE TABLE variant_properties (
id SERIAL PRIMARY KEY,
name TEXT NOT NULL,
unique_name TEXT NOT NULL UNIQUE,
abbreviation VARCHAR(4) NOT NULL,
sortkey INTEGER,
itime TIMESTAMP DEFAULT now(),
mtime TIMESTAMP
);
CREATE TRIGGER mtime_variant_properties
BEFORE UPDATE ON variant_properties
FOR EACH ROW EXECUTE PROCEDURE set_mtime();

CREATE TABLE variant_properties_parts (
variant_property_id INTEGER NOT NULL REFERENCES variant_properties(id),
part_id INTEGER NOT NULL REFERENCES parts(id),
PRIMARY KEY (part_id, variant_property_id)
);

CREATE TABLE translation_variant_properties (
variant_property_id INTEGER NOT NULL REFERENCES variant_properties(id),
language_id INTEGER NOT NULL REFERENCES language(id),
name TEXT NOT NULL,
itime TIMESTAMP DEFAULT now(),
mtime TIMESTAMP,
PRIMARY KEY (variant_property_id, language_id)
);
CREATE TRIGGER mtime_translation_variant_properties
BEFORE UPDATE ON translation_variant_properties
FOR EACH ROW EXECUTE PROCEDURE set_mtime();

CREATE TABLE variant_property_values (
id SERIAL PRIMARY KEY,
variant_property_id INTEGER NOT NULL REFERENCES variant_properties(id),
value TEXT NOT NULL,
abbreviation VARCHAR(4) NOT NULL,
sortkey INTEGER,
itime TIMESTAMP DEFAULT now(),
mtime TIMESTAMP
);
CREATE TRIGGER mtime_variant_property_values
BEFORE UPDATE ON variant_property_values
FOR EACH ROW EXECUTE PROCEDURE set_mtime();

CREATE TABLE variant_property_values_parts (
variant_property_value_id INTEGER NOT NULL REFERENCES variant_property_values(id),
part_id INTEGER NOT NULL REFERENCES parts(id),
PRIMARY KEY (part_id, variant_property_value_id)
);

CREATE TABLE translation_variant_property_values (
variant_property_value_id INTEGER NOT NULL REFERENCES variant_property_values(id),
language_id INTEGER NOT NULL REFERENCES language(id),
value TEXT NOT NULL,
itime TIMESTAMP DEFAULT now(),
mtime TIMESTAMP,
PRIMARY KEY (variant_property_value_id, language_id)
);
CREATE TRIGGER mtime_translation_variant_property_values
BEFORE UPDATE ON translation_variant_property_values
FOR EACH ROW EXECUTE PROCEDURE set_mtime();
(42-42/645)