diff options
author | Dan McGee <dan@archlinux.org> | 2011-03-01 17:21:06 +0100 |
---|---|---|
committer | Lukas Fleischer <archlinux@cryptocrack.de> | 2011-03-04 10:29:14 +0100 |
commit | f9eba12312fc6a1758f7f1051a8f30b435175f94 (patch) | |
tree | db44e5216dfee88d12fbf3e5f1e772b6dcfc27b0 | |
parent | abd41bbb51ea2340bd06648cc0cd5b9144cce91e (diff) | |
download | aur-f9eba12312fc6a1758f7f1051a8f30b435175f94.tar.gz aur-f9eba12312fc6a1758f7f1051a8f30b435175f94.tar.xz |
Ensure users can be deleted when foreign keys are present
This change is necessary to prevent this:
mysql> delete from Users where ID = 112;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`aur`.`Packages`, CONSTRAINT `Packages_ibfk_2` FOREIGN KEY (`SubmitterUID`) REFERENCES `Users` (`ID`) ON DELETE NO ACTION)
As a bonus, due to foreign keys, orphaning of packages will be
automatic.
Signed-off-by: Dan McGee <dan@archlinux.org>
Signed-off-by: Lukas Fleischer <archlinux@cryptocrack.de>
-rw-r--r-- | support/schema/aur-schema.sql | 5 | ||||
-rw-r--r-- | web/lib/acctfuncs.inc | 1 |
2 files changed, 3 insertions, 3 deletions
diff --git a/support/schema/aur-schema.sql b/support/schema/aur-schema.sql index 44501b6b..8226b182 100644 --- a/support/schema/aur-schema.sql +++ b/support/schema/aur-schema.sql @@ -114,8 +114,9 @@ CREATE TABLE Packages ( INDEX (SubmitterUID), INDEX (MaintainerUID), FOREIGN KEY (CategoryID) REFERENCES PackageCategories(ID) ON DELETE NO ACTION, - FOREIGN KEY (SubmitterUID) REFERENCES Users(ID) ON DELETE NO ACTION, - FOREIGN KEY (MaintainerUID) REFERENCES Users(ID) ON DELETE NO ACTION + -- deleting a user will cause packages to be orphaned, not deleted + FOREIGN KEY (SubmitterUID) REFERENCES Users(ID) ON DELETE SET NULL, + FOREIGN KEY (MaintainerUID) REFERENCES Users(ID) ON DELETE SET NULL ) ENGINE = InnoDB; diff --git a/web/lib/acctfuncs.inc b/web/lib/acctfuncs.inc index a4de12c6..5dfe50e4 100644 --- a/web/lib/acctfuncs.inc +++ b/web/lib/acctfuncs.inc @@ -801,7 +801,6 @@ function user_suspended( $id ) /* * This should be expanded to return something - * TODO: Handle orphaning of user's packages */ function user_delete( $id ) { |