Solución:
Este error se encuentra cuando se actualiza la clave principal de una tabla, pero una clave externa de otra tabla hace referencia a ella y la actualización específica se establece en Sin acción. La acción No es la opción predeterminada.
Si este es su caso y no se establece ninguna acción en la operación de actualización, puede cambiar la definición de clave externa a Cascade.
Haga clic derecho en su clave externa y seleccione Modificar. En el cuadro de diálogo Relaciones de clave externa en las especificaciones INSERTAR y ACTUALIZAR, configure la regla ACTUALIZAR en Cascade:
También puede establecer la regla usando T-SQL:
ALTER TABLE YourTable
DROP Constraint Your_FK
GO
ALTER TABLE YourTable
ADD CONSTRAINT [New_FK_Constraint]
FOREIGN KEY (YourColumn) REFERENCES ReferencedTable(YourColumn)
ON DELETE CASCADE ON UPDATE CASCADE
GO
Espero que esto ayude
Si no desea cambiar la estructura de su tabla, puede ejecutar la siguiente consulta:
ALTER TABLE [UserStore]
NOCHECK CONSTRAINT FK_UserStore_User_UserId
ALTER TABLE [UserIdentity]
NOCHECK CONSTRAINT FK_UserIdentity_User_UserId
BEGIN TRAN
UPDATE [user]
SET Id = 10
WHERE Id = 9
UPDATE [dbo].[UserStore]
SET UserId = 10
WHERE UserId = 9
UPDATE [dbo].UserIdentity
SET UserId = 10
WHERE UserId = 9
COMMIT TRAN
ALTER TABLE [UserStore]
CHECK CONSTRAINT FK_UserStore_User_UserId
ALTER TABLE UserIdentity
CHECK CONSTRAINT FK_UserIdentity_User_UserId
Si columna dbo.patient_address.id_no
permite NULL
s entonces podrías usar esta solución:
SET XACT_ABORT ON;
BEGIN TRANSACTION;
-- I assmume that [id] is the primary key of patient_address table (single column key)
-- replace the name of [id] column with the name of PK column from patient_address table
-- replace INT data type with the proper type
DECLARE @RowsForUpdate TABLE([id] INT PRIMARY KEY);
UPDATE patient_address
SET id_no = NULL
OUTPUT deleted.[id] INTO @RowsForUpdate ([id])
WHERE id_no='8008255601088'
UPDATE patient
SET id_no='7008255601088'
WHERE id_no='8008255601088'
UPDATE patient_address
SET id_no='7008255601088'
WHERE [id] IN (SELECT u.[id] FROM @RowsForUpdate u)
COMMIT;