Updated database schema with additional foreign keys and ON DELETE CASCADE to secure consistency

This commit is contained in:
Lukas Metzger 2016-02-10 17:06:56 +01:00
parent 3ce4af18af
commit 4fb70354ce
3 changed files with 35 additions and 6 deletions

View file

@ -60,6 +60,9 @@ CREATE TABLE IF NOT EXISTS records (
KEY domain_id (domain_id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE records
ADD CONSTRAINT records_ibfk_1 FOREIGN KEY (domain_id) REFERENCES domains (id) ON DELETE CASCADE;
CREATE TABLE IF NOT EXISTS user (
id int(11) NOT NULL AUTO_INCREMENT,
name varchar(50) NOT NULL,
@ -69,8 +72,9 @@ CREATE TABLE IF NOT EXISTS user (
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE permissions
ADD CONSTRAINT permissions_ibfk_2 FOREIGN KEY (domain) REFERENCES domains (id),
ADD CONSTRAINT permissions_ibfk_1 FOREIGN KEY (user) REFERENCES user (id);
ADD CONSTRAINT permissions_ibfk_1 FOREIGN KEY (domain) REFERENCES domains (id) ON DELETE CASCADE;
ALTER TABLE permissions
ADD CONSTRAINT permissions_ibfk_2 FOREIGN KEY (user) REFERENCES user (id) ON DELETE CASCADE;
CREATE TABLE IF NOT EXISTS remote (
id int(11) NOT NULL AUTO_INCREMENT,
@ -83,8 +87,8 @@ CREATE TABLE IF NOT EXISTS remote (
KEY record (record)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `remote`
ADD CONSTRAINT `remote_ibfk_1` FOREIGN KEY (`record`) REFERENCES `records` (`id`);
ALTER TABLE remote
ADD CONSTRAINT remote_ibfk_1 FOREIGN KEY (record) REFERENCES records (id) ON DELETE CASCADE;
CREATE TABLE IF NOT EXISTS options (
name varchar(255) NOT NULL,
@ -92,7 +96,7 @@ CREATE TABLE IF NOT EXISTS options (
PRIMARY KEY (name)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO options(name,value) VALUES ('schema_version', 1);
INSERT INTO options(name,value) VALUES ('schema_version', 2);
";

View file

@ -58,6 +58,31 @@ if(isset($input->action) && $input->action == "requestUpgrade") {
$db->multi_query($sql);
while ($db->next_result()) {;}
}
if($currentVersion < 2) {
$sql = "
ALTER TABLE permissions
DROP FOREIGN KEY permissions_ibfk_1;
ALTER TABLE permissions
DROP FOREIGN KEY permissions_ibfk_2;
ALTER TABLE permissions
ADD CONSTRAINT permissions_ibfk_1 FOREIGN KEY (domain) REFERENCES domains (id) ON DELETE CASCADE;
ALTER TABLE permissions
ADD CONSTRAINT permissions_ibfk_2 FOREIGN KEY (user) REFERENCES user (id) ON DELETE CASCADE;
ALTER TABLE remote
DROP FOREIGN KEY remote_ibfk_1;
ALTER TABLE remote
ADD CONSTRAINT remote_ibfk_1 FOREIGN KEY (record) REFERENCES records (id) ON DELETE CASCADE;
ALTER TABLE records
ADD CONSTRAINT records_ibfk_1 FOREIGN KEY (domain_id) REFERENCES domains (id) ON DELETE CASCADE;
UPDATE options SET value=2 WHERE name='schema_version';
";
$db->multi_query($sql);
while ($db->next_result()) {;}
}
$retval['status'] = "success";
}

View file

@ -17,7 +17,7 @@
*/
function getExpectedVersion() {
return 1;
return 2;
}
function checkVersion($db) {