Я добавил щедрость к этому, так как у меня есть, что до сих пор было в состоянии понять это, и время ушло.Добавление столбца rowguid нарушило эту хранимую процедуру?
Приведенная ниже хранимая процедура не позволит мне добавить ее для изменения. При попытке изменить его, я получаю следующее сообщение об ошибке ->
Msg 213, Level 16, State 1, Procedure spPersonRelationshipAddOpposing, Line 51 Insert Error: Column name or number of supplied values does not match table definition.
Кроме того, Поскольку DB был создан для слияния Rep (а ROWGUID колонка была добавлена) эта хранимая процедура теперь уже не работает должным образом.
Нужно ли мне менять порядок расположения столбцов? Один из предупреждений при установке Merge Rep было это ->
Adding Guid Column MAY Cause INSERT Statements without column lists to Fail
Что это значит? Идеи о том, как я это исправить?
USE [Connect]
GO
/****** Object: StoredProcedure [dbo].[spPersonRelationshipAddOpposing] Script Date: 07/15/2009 08:14:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spPersonRelationshipAddOpposing]
@ExistingRelationshipID INT
AS
BEGIN
--Declare local variables
DECLARE @PersonID INT --PersonID of established relarionship
DECLARE @RelatedID INT --RelatedID of established relarionship
DECLARE @Relationship VARCHAR(4) --Established relarionship
DECLARE @RelatedSex as VARCHAR(1)
DECLARE @OpposingRelationship VARCHAR(4)
DECLARE @OpposingRelationshipID INT
--Fill variables from existing relationship
SELECT @PersonID = PersonID, @RelatedID = RelatedID, @Relationship=PersonRelationshipTypeID
FROM tblPersonRelationship where PersonRelationshipID = @ExistingRelationshipID
--Get gender of relative for finding opposing relationship type
SELECT @RelatedSex = (SELECT Gender FROM tblPerson WHERE PersonID = @PersonID)
--get opposing relationship types
IF (@RelatedSex='M')
BEGIN
SELECT @OpposingRelationship = (SELECT OpposingMaleRelationship
From tblAdminPersonRelationshipType
WHERE PersonRelationshipTypeID = @Relationship)
END
ELSE IF (@RelatedSex='F')
BEGIN
SELECT @OpposingRelationship = (SELECT OpposingFemaleRelationship
From tblAdminPersonRelationshipType
WHERE PersonRelationshipTypeID = @Relationship)
END
--check for existing opposing relationship
SELECT @OpposingRelationshipID = (SELECT MAX(PersonRelationshipID) FROM tblPersonRelationship WHERE PersonID = @RelatedID AND RelatedID = @PersonID)
--if an opposing relationship was found
IF (@OpposingRelationship IS NOT NULL)
BEGIN
--if there is a relationship, update it
IF ISNUMERIC(@OpposingRelationshipID)=1
BEGIN
UPDATE tblPersonRelationship
SET PersonRelationshipTypeID = @OpposingRelationship,
MarriageDate = (SELECT MarriageDate FROM tblPersonRelationship WHERE PersonRelationshipID = @ExistingRelationshipID),
ResidesWithPersonFlag = (SELECT ResidesWithPersonFlag FROM tblPersonRelationship WHERE PersonRelationshipID = @ExistingRelationshipID),
UpdateDateTime = (SELECT UpdateDateTime FROM tblPersonRelationship WHERE PersonRelationshipID = @ExistingRelationshipID),
UpdateProgram = (SELECT UpdateProgram FROM tblPersonRelationship WHERE PersonRelationshipID = @ExistingRelationshipID),
UpdateUserID = (SELECT UpdateUserID FROM tblPersonRelationship WHERE PersonRelationshipID = @ExistingRelationshipID)
WHERE PersonRelationshipID = @OpposingRelationshipID
END
--otherwise add record
ELSE IF (@OpposingRelationship IS NOT NULL)
BEGIN
INSERT INTO tblPersonRelationship
SELECT @RelatedID, @OpposingRelationship, @PersonID,
MarriageDate, NULL, NULL,
ResidesWithPersonFlag, NULL, UpdateDateTime, UpdateProgram,
UpdateUserID, UpdateDateTime, UpdateProgram,
UpdateUserID, NULL FROM tblPersonRelationship WHERE PersonRelationshipID = @ExistingRelationshipID
END
END
END
Вы получаете сообщение об ошибке, когда пытаетесь его воспроизвести? Разве это просто не появляется? –
Извините, после вашего комментария я понял, как дерьмовый вопрос был, и я переформулировал его. Это лучше? –
Этот вопрос был переработан, чтобы попытаться атаковать это под другим углом. Я приспосабливаюсь к двум плакатам ниже, так как это делает должности неуместными, но это было необходимо, поскольку они не отвечали на мой вопрос и даже с щедростью, которую никто больше не пытался. –