commit 411b300e27a988a6f5c4ffba3aeb08f6cfc00828
parent 4945737355fc49b41c2f9e056ac608f57ee671fe
Author: Dan Stillman <dstillman@zotero.org>
Date: Tue, 29 Jul 2008 17:49:55 +0000
Add foreign key for proxy tables
Diffstat:
2 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/chrome/content/zotero/xpcom/proxy.js b/chrome/content/zotero/xpcom/proxy.js
@@ -386,8 +386,8 @@ Zotero.Proxy.prototype.erase = function() {
try {
Zotero.DB.beginTransaction();
- Zotero.DB.query("DELETE FROM proxies WHERE proxyID = ?", [this.proxyID]);
Zotero.DB.query("DELETE FROM proxyHosts WHERE proxyID = ?", [this.proxyID]);
+ Zotero.DB.query("DELETE FROM proxies WHERE proxyID = ?", [this.proxyID]);
Zotero.DB.commitTransaction();
} catch(e) {
Zotero.DB.rollbackTransaction();
diff --git a/triggers.sql b/triggers.sql
@@ -1,4 +1,4 @@
--- 1
+-- 2
-- Triggers to validate date field
DROP TRIGGER IF EXISTS insert_date_field;
@@ -657,3 +657,28 @@ CREATE TRIGGER fkd_syncDeleteLog_syncObjectTypeID_syncObjectTypes_syncObjectType
SELECT RAISE(ABORT, 'delete on table "syncObjectTypes" violates foreign key constraint "fkd_syncDeleteLog_syncObjectTypeID_syncObjectTypes_syncObjectTypeID"')
WHERE (SELECT COUNT(*) FROM syncDeleteLog WHERE syncObjectTypeID = OLD.syncObjectTypeID) > 0;
END;
+
+-- proxyHosts/proxyID
+DROP TRIGGER IF EXISTS fki_proxyHosts_proxyID_proxies_proxyID;
+CREATE TRIGGER fki_proxyHosts_proxyID_proxies_proxyID
+BEFORE INSERT ON proxyHosts
+ FOR EACH ROW BEGIN
+ SELECT RAISE(ABORT, 'insert on table "proxyHosts" violates foreign key constraint "fki_proxyHosts_proxyID_proxies_proxyID"')
+ WHERE (SELECT COUNT(*) FROM proxies WHERE proxyID = NEW.proxyID) = 0;
+ END;
+
+DROP TRIGGER IF EXISTS fku_proxyHosts_proxyID_proxies_proxyID;
+CREATE TRIGGER fku_proxyHosts_proxyID_proxies_proxyID
+ BEFORE UPDATE OF proxyID ON proxyHosts
+ FOR EACH ROW BEGIN
+ SELECT RAISE(ABORT, 'update on table "proxyHosts" violates foreign key constraint "fku_proxyHosts_proxyID_proxies_proxyID"')
+ WHERE (SELECT COUNT(*) FROM proxies WHERE proxyID = NEW.proxyID) = 0;
+ END;
+
+DROP TRIGGER IF EXISTS fkd_proxyHosts_proxyID_proxies_proxyID;
+CREATE TRIGGER fkd_proxyHosts_proxyID_proxies_proxyID
+ BEFORE DELETE ON proxies
+ FOR EACH ROW BEGIN
+ SELECT RAISE(ABORT, 'delete on table "proxies" violates foreign key constraint "fkd_proxyHosts_proxyID_proxies_proxyID"')
+ WHERE (SELECT COUNT(*) FROM proxyHosts WHERE proxyID = OLD.proxyID) > 0;
+ END;