backdafuckup Back to da old skool | Bonjour,
Je n'y connais pas grand chose en procédures stockées, et j'aurais besoin d'un petit coup de main.
Le code n'est pas de moi (c'est de l'Open Source).
Il s'agit du code d'un forum, pour lequel j'ai un gros bug.
Pour la suppression, édition, création de forum on utilise des procédures stockées en sql, dont voici le code :
Code :
- - sp_helptext forums_Forum_CreateUpdateDelete
- CREATE PROCEDURE forums_Forum_CreateUpdateDelete
- (
- @ForumID int out,
- @DeleteForum bit = 0,
- @Name nvarchar(256) = '',
- @Description nvarchar(3000) = '',
- @ParentID int = 0,
- @ForumGroupID int = 0,
- @IsModerated bit = 1,
- @DisplayPostsOlderThan int = 0,
- @IsActive bit = 0,
- @EnablePostStatistics bit = 1,
- @EnableAutoDelete bit = 0,
- @EnableAnonymousPosting bit = 0,
- @AutoDeleteThreshold int = 90,
- @SortOrder int = 0
- )
- AS
- -- Are we deleting the forum?
- IF @DeleteForum = 1
- BEGIN
- -- delete the specified forum and all of its posts
- -- first we must remove all the thread tracking rows
- DELETE
- forums_TrackedThreads
- WHERE
- ThreadID IN (SELECT DISTINCT ThreadID FROM forums_Threads WHERE ForumID = @ForumID)
- -- we must remove all of the moderators for this forum
- DELETE
- forums_Moderators
- WHERE
- ForumID = @ForumID
- -- now we must remove all of the posts
- DELETE
- forums_Posts
- WHERE
- ForumID = @ForumID
- -- finally we can delete the actual forum
- DELETE
- forums_Forums
- WHERE
- ForumID = @ForumID
- RETURN
- END
|
Le bug se situe au niveau du
Code :
- DELETE
- forums_Forums
- WHERE
- ForumID = @ForumID
|
En fait, la suppression se passe très bien, mais il oublie que d'autres forums peuvent l'avoir en tant que parent (il y a un champ @ParentID).
Ce que je voudrais faire donc (ce dont j'ai besoin c'est une traduction en SQL (je crois que c'est du PL/SQL pour les stored procedures non ?) c'est
UPDATE forums_FORUMS SET ParentID = 0 WHERE ParentID = @ForumID
Ca marche comme ça ?
Merci d'avance. |