Моя процедура вставки работает нормально, как я хочу. Но обновление не работает с идентификатором области.Как написать процедуру обновления с идентификатором области
SET ANSI_NULLS ON
ALTER PROCEDURE [dbo].[spr_unitCreation]
(
@Unit_Name VARCHAR(50) = NULL,
@Unit_Abbreviation VARCHAR(50) = NULL,
@Unit_type VARCHAR(50) = NULL,
@Decimal_Places VARCHAR(50) = NULL,
@Description VARCHAR(50) = NULL,
@Super_Unit VARCHAR(50) = NULL,
@Per_Unit VARCHAR(50) = NULL,
@unit_Id INT OUTPUT,
@abc VARCHAR(50) = NULL
)
AS
BEGIN
IF @abc = 'update' BEGIN
SET NOCOUNT ON;
SELECT @unit_Id AS SCOPE_IDENTITY
UPDATE tbl_UnitCreation
SET Unit_Name = @Unit_Name,
Unit_Abbreviation = @Unit_Abbreviation,
Unit_type = @Unit_type,
Decimal_Places = @Decimal_Places,
Description = @Description,
Super_Unit = @Super_Unit,
Per_Unit = @Per_Unit
WHERE unit_Id = @unit_Id
END
END
SELECT * FROM tbl_UnitCreation
'обновление не работает с идентификатором объема 'Вы получаете сообщение об ошибке? –
Общий сценарий - передать полученный после идентификатора вставки все остальные SP, такие как UPDATE/DELETE/SELECT. Есть два варианта: 1) вы контролируете весь сценарий и точно знаете, что update-SP появляется сразу после вставки-SP, чтобы вы могли (и на самом деле должны) передавать новый ID для обновления-SP 2), вы не контролируете сценарий и не можете убедитесь, что перед оператором вызова update-SP вставил строку в нужную таблицу, поэтому вы не можете использовать ID, полученный с помощью SCOPE_IDENTITY(), потому что вы не знаете, к какой таблице принадлежит этот идентификатор. –
, если вы хотите обновить последнюю вставленную запись, тогда в этом случае используйте 'IDENT_CURRENT' –