क्या आपको लगता है कि टी-एसक्यूएल में लेनदेन लिखने का एक बेहतर तरीका है? क्या कोई बेहतर दृष्टिकोण है जो इस लेनदेन का उपयोग करने वाले अनुप्रयोग की रखरखाव और प्रदर्शन में सुधार करता है?टी-एसक्यूएल में एक लेनदेन लिखना और त्रुटि प्रबंधन
-- Description: Insert email Receiver under specified subject
-- =============================================
ALTER PROCEDURE [Contact].[Receiver_stpInsert]
@First_Name nvarchar(30),
@Last_Name nvarchar(30),
@Email varchar(60),
@Subject_Id int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @error_num int;
BEGIN TRANSACTION
INSERT INTO Contact.Receiver(First_Name, Last_Name, Email) VALUES(@First_Name, @Last_Name, @Email);
SET @error_num = @@ERROR;
IF (@error_num <> 0)
BEGIN
ROLLBACK;
RETURN;
END
DECLARE @rec_record_id int;
SET @rec_record_id = (SELECT Record_Id FROM Contact.Receiver WHERE Email = @Email);
SET @error_num = @@ERROR;
IF (@error_num <> 0)
BEGIN
ROLLBACK;
RETURN;
END
INSERT INTO Contact.Receiver_Subject(Receiver_Id, Subject_Id) VALUES(@rec_record_id, @Subject_Id);
SET @error_num = @@ERROR;
IF (@error_num <> 0)
BEGIN
ROLLBACK;
RETURN;
END
SET @error_num = @@ERROR;
IF (@error_num <> 0)
BEGIN
ROLLBACK;
RETURN;
END
ELSE
BEGIN
Commit;
END
END
मैं COMTIT ट्रांज़ेक्शन को BEGIN TRY में डाल दूंगा .... अंत TRY ब्लॉक - पूरे कथन के बाद नहीं। क्या यह आसान और अधिक सटीक नहीं होगा? –
'BEGIN TRYACTION' के बाद 'BEGIN TRANSACTION' क्यों नहीं डालें? –
यह 6 साल पहले था .... मैं जो सोच रहा था उसे याद नहीं कर सकता;) लेकिन हाँ, मैं लेनदेन को BEGIN TRY के अंदर रखूंगा। मैंने जवाब अपडेट कर लिया है। – AdaTheDev