| [Home] | Tranzacţii în T-SQL | ||
şi unul care conţine informaţiile privind partajarea semnelor de carte şi a comentariilor
corespunzătoare
unor grupuri de utilizatori (BookmarkSharing):
CREATE TABLE BookmarkSharing
([ID] INT PRIMARY KEY
IDENTITY, BookmarkID INT FOREIGN KEY REFERENCES Bookmark
([ID]), GroupID
INT)

Se doreşte scrierea unei proceduri stocate pentru inserarea unor noi semne de carte în
tabela Bookmark.
Atunci când se doreşte ca noul semn de carte să fie partajat unui grup de utilizatori
inserarea înregistrării
noi în tabela BookmarkSharing să se facă în
aceeaşi procedură stocată.
-------------------------------------------------
-- Exemplu: utilizarea tranzacţiilor în T-SQL
-------------------------------------------------
CREATE PROCEDURE
spAddBookmark
@ID AS INT OUTPUT,
@UserID AS INT,
@Comment AS VARCHAR (100) = NULL,
@GroupID AS INT = NULL
AS
DECLARE @Bookmarks INT
DECLARE @err INT
SET NOCOUNT ON
SET ANSI_WARNINGS OFF
------------------------------------------------------------------------------------------
--începutul tranzacţiei --------------------------------------------------------------------
BEGIN TRANSACTION
--insert în tabela de semne de carte
INSERT INTO Bookmark (UserID, Comment)
VALUES (@UserID, @Comment)
SET @err = @@ERROR
IF @err <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN @err
END
ELSE
BEGIN
SELECT @ID = @@IDENTITY
END
--daca se doreste ca marcajul sa fie vizibil si pentru un grup de utilizatori (ceea ce înseamnă: @GroupID IS NOT NULL)
IF @GroupID IS NOT NULL
BEGIN
INSERT INTO BookmarkSharing (BookmarkID, GroupID)
VALUES (@ID, @GroupID)
SET @err = @@ERROR
IF @err <> 0
BEGIN
ROLLBACK TRANSACTION
RETURN @err
END
END
--încheierea tranzacţiei --------------------------------------------------------------------
COMMIT TRANSACTION
-------------------------------------------------------------------------------------------
SET NOCOUNT OFF
SET ANSI_WARNINGS ON
GO
Exemple de utilizare:
--pentru inserarea unui semn de carte al utilizaturului cu ID-ul 3 partajat grupului cu ID-ul 10