diff options
author | Yorhel <git@yorhel.nl> | 2011-02-20 09:03:45 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2011-02-20 09:03:45 +0100 |
commit | 4884cca9ac061d2ccce87a1d6d912efc3cc04fab (patch) | |
tree | adb2a2fc60a8c738b1981e3056deaa9ae9fa1a45 /util/sql | |
parent | 61282da656bc1a30ed697410906e9c256e38363c (diff) |
chardb: Added "group" property to traits
It's more like a cache, and has some unintuitive problems when a trait
is applied to multiple top-level traits. But this'll do the trick
anyway.
Diffstat (limited to 'util/sql')
-rw-r--r-- | util/sql/func.sql | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/util/sql/func.sql b/util/sql/func.sql index aa453350..0938f76d 100644 --- a/util/sql/func.sql +++ b/util/sql/func.sql @@ -379,8 +379,10 @@ BEGIN CREATE TEMPORARY TABLE edit_char (LIKE chars_rev INCLUDING DEFAULTS INCLUDING CONSTRAINTS); ALTER TABLE edit_char DROP COLUMN id; ALTER TABLE edit_char DROP COLUMN cid; + CREATE TEMPORARY TABLE edit_char_traits (LIKE chars_traits INCLUDING DEFAULTS INCLUDING CONSTRAINTS); + ALTER TABLE edit_char_traits DROP COLUMN cid; EXCEPTION WHEN duplicate_table THEN - TRUNCATE edit_char; + TRUNCATE edit_char, edit_char_traits; END; PERFORM edit_revtable('c', hid); -- new char @@ -389,6 +391,7 @@ BEGIN -- load revision ELSE INSERT INTO edit_char SELECT name, original, alias, image, "desc", s_bust, s_waist, s_hip, b_month, b_day, height, weight,bloodt FROM chars_rev WHERE id = hid; + INSERT INTO edit_char_traits SELECT tid, spoil FROM chars_traits WHERE cid = hid; END IF; END; $$ LANGUAGE plpgsql; @@ -404,6 +407,7 @@ BEGIN END IF; SELECT INTO r * FROM edit_commit(); INSERT INTO chars_rev SELECT r.cid, r.iid, name, original, alias, image, "desc", s_bust, s_waist, s_hip, b_month, b_day, height, weight, bloodt FROM edit_char; + INSERT INTO chars_traits SELECT r.cid, tid, spoil FROM edit_char_traits; UPDATE chars SET latest = r.cid WHERE id = r.iid; RETURN r; END; |