您好,并提前致谢。我是初学者,并尝试通过存储过程更新多个表。除categoryDetail
表外,所有表都在更新。这是一个复合主键,因此不想更改。我想我越来越近,但我需要帮助才能看到我出错的地方。
我无法发布表格的图像,争议的三个表格如下:
companyDetails
表
PK companyID
categoryDetails
表
PK catTypeId (this column won't update)
PK companyID
catKeywords (varchar)
categoryType
表
PK catTypeId
categoryType1 (varchar)
这是我的存储过程代码:
CREATE PROCEDURE [dbo].[UpdateProfile]
(
@UserId UniqueIdentifier,
@custFname varchar(35),
@custLname varchar (35),
-- email from memberships table
@Email nvarchar(256) ,
@custMailList bit,
--Company Details table
@cName varchar(45),
@cAddress varchar(100),
@cEmail varchar(50),
@keywords varchar(max),
@catType varchar(25), -- the new value of the catTypeId
@cDescribe varchar(150)
)
AS
BEGIN TRANSACTION
DECLARE @companyID int
DECLARE @catTypeID int
DECLARE @oldCatTypeID int
UPDATE contactCustomer
SET custFname = @custFname,
custLname = @custLname,
custMailList = @custMailList
WHERE
contactCustomer.UserId = @UserId;
UPDATE Memberships
SET Email = @Email
WHERE Memberships.UserId = @UserId;
SELECT
@companyID = companyID
FROM
contactCustomer
WHERE
contactCustomer.UserId = @UserId;
UPDATE companyDetails
SET companyName = @cName,
companyAddress = @cAddress,
companyDescription = @cDescribe,
companyEmail = @cEmail
WHERE
companyDetails.companyID = @companyID
UPDATE categoryDetail
SET catKeywords = @keywords
WHERE categoryDetail.companyID = @companyID
SET IDENTITY_INSERT categoryDetail ON
INSERT INTO categoryDetail (catTypeId, companyID, catKeywords)
SELECT
@catType AS catTypeId, companyID, catKeywords
FROM
categoryDetail
WHERE
catTypeId = @oldCatTypeID
IF @@ROWCOUNT = 1
DELETE FROM categoryDetail
WHERE catTypeId = @oldCatTypeID
SET IDENTITY_INSERT categoryDetail OFF
COMMIT TRANSACTION