shockjiang | a5ae48c | 2014-07-27 23:21:41 -0700 | [diff] [blame^] | 1 | /* |
| 2 | some difference with Alex's sql file: |
| 3 | 1. class field in table rrsets could be NULL |
| 4 | 2. type field in table rrsets is changed to text from integer(10) |
| 5 | */ |
| 6 | DROP TRIGGER IF EXISTS rrs_update; |
| 7 | DROP TABLE IF EXISTS zones; |
| 8 | DROP TABLE IF EXISTS rrsets; |
| 9 | DROP TABLE IF EXISTS rrs; |
| 10 | CREATE TABLE zones ( |
| 11 | id INTEGER NOT NULL PRIMARY KEY, |
| 12 | name blob NOT NULL UNIQUE); |
| 13 | CREATE TABLE rrsets ( |
| 14 | id INTEGER NOT NULL PRIMARY KEY, |
| 15 | zone_id integer(10) NOT NULL, |
| 16 | label text NOT NULL, |
| 17 | class integer(10), |
| 18 | type text NOT NULL, |
| 19 | ndndata blob, |
| 20 | FOREIGN KEY(zone_id) REFERENCES zones(id) ON UPDATE Cascade ON DELETE Cascade); |
| 21 | CREATE TABLE rrs ( |
| 22 | id INTEGER NOT NULL PRIMARY KEY, |
| 23 | rrset_id integer(10) NOT NULL, |
| 24 | ttl integer(10) NOT NULL, |
| 25 | rrdata blob NOT NULL, |
| 26 | FOREIGN KEY(rrset_id) REFERENCES rrsets(id) ON UPDATE Cascade ON DELETE Cascade); |
| 27 | CREATE UNIQUE INDEX rrsets_zone_id_label_class_type |
| 28 | ON rrsets (zone_id, label, class, type); |
| 29 | CREATE INDEX rrs_rrset_id |
| 30 | ON rrs (rrset_id); |
| 31 | CREATE INDEX rrs_rrset_id_rrdata |
| 32 | ON rrs (rrset_id, rrdata); |
| 33 | CREATE TRIGGER rrs_update |
| 34 | BEFORE INSERT ON rrs |
| 35 | FOR EACH ROW |
| 36 | BEGIN |
| 37 | DELETE FROM rrs WHERE rrset_id = NEW.rrset_id AND rrdata = NEW.rrdata; |
| 38 | END; |
| 39 | |