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)
|
||||
) 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);
|
||||
|
||||
";
|
||||
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
*/
|
||||
|
||||
function getExpectedVersion() {
|
||||
return 1;
|
||||
return 2;
|
||||
}
|
||||
|
||||
function checkVersion($db) {
|
||||
|
|
Loading…
Reference in a new issue