Updated database schema with additional foreign keys and ON DELETE CASCADE to secure consistency
This commit is contained in:
parent
3ce4af18af
commit
4fb70354ce
|
@ -60,6 +60,9 @@ CREATE TABLE IF NOT EXISTS records (
|
||||||
KEY domain_id (domain_id)
|
KEY domain_id (domain_id)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
) 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 (
|
CREATE TABLE IF NOT EXISTS user (
|
||||||
id int(11) NOT NULL AUTO_INCREMENT,
|
id int(11) NOT NULL AUTO_INCREMENT,
|
||||||
name varchar(50) NOT NULL,
|
name varchar(50) NOT NULL,
|
||||||
|
@ -69,8 +72,9 @@ CREATE TABLE IF NOT EXISTS user (
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
ALTER TABLE permissions
|
ALTER TABLE permissions
|
||||||
ADD CONSTRAINT permissions_ibfk_2 FOREIGN KEY (domain) REFERENCES domains (id),
|
ADD CONSTRAINT permissions_ibfk_1 FOREIGN KEY (domain) REFERENCES domains (id) ON DELETE CASCADE;
|
||||||
ADD CONSTRAINT permissions_ibfk_1 FOREIGN KEY (user) REFERENCES user (id);
|
ALTER TABLE permissions
|
||||||
|
ADD CONSTRAINT permissions_ibfk_2 FOREIGN KEY (user) REFERENCES user (id) ON DELETE CASCADE;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS remote (
|
CREATE TABLE IF NOT EXISTS remote (
|
||||||
id int(11) NOT NULL AUTO_INCREMENT,
|
id int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
@ -83,8 +87,8 @@ CREATE TABLE IF NOT EXISTS remote (
|
||||||
KEY record (record)
|
KEY record (record)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
ALTER TABLE `remote`
|
ALTER TABLE remote
|
||||||
ADD CONSTRAINT `remote_ibfk_1` FOREIGN KEY (`record`) REFERENCES `records` (`id`);
|
ADD CONSTRAINT remote_ibfk_1 FOREIGN KEY (record) REFERENCES records (id) ON DELETE CASCADE;
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS options (
|
CREATE TABLE IF NOT EXISTS options (
|
||||||
name varchar(255) NOT NULL,
|
name varchar(255) NOT NULL,
|
||||||
|
@ -92,7 +96,7 @@ CREATE TABLE IF NOT EXISTS options (
|
||||||
PRIMARY KEY (name)
|
PRIMARY KEY (name)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||||
|
|
||||||
INSERT INTO options(name,value) VALUES ('schema_version', 1);
|
INSERT INTO options(name,value) VALUES ('schema_version', 2);
|
||||||
|
|
||||||
";
|
";
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,31 @@ if(isset($input->action) && $input->action == "requestUpgrade") {
|
||||||
$db->multi_query($sql);
|
$db->multi_query($sql);
|
||||||
while ($db->next_result()) {;}
|
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";
|
$retval['status'] = "success";
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function getExpectedVersion() {
|
function getExpectedVersion() {
|
||||||
return 1;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkVersion($db) {
|
function checkVersion($db) {
|
||||||
|
|
Loading…
Reference in a new issue