• When I try your code as-is and execute the proc I am not seeing any locks opened against TableB which is what I would expect since no FK columns are being affected. Did you maybe pare down the proc too much? Does the actual proc also contain ObjectID in the SET-column-list?

    After changing your sample proc in this way I was able to start seeing locks opened on TableB due to the FK with ON DELETE CASCADE.

    ALTER PROCEDURE [dbo].[spUpdateObjectHeader]

    @objectID INT,

    @ColG VARCHAR(64),

    @ColH VARCHAR(64),

    @ColI VARCHAR(64),

    @ColD DATETIME

    AS

    UPDATE TableA

    SET [ColG] = @ColG,

    [ColH] = @ColH,

    [ColI] = @ColI,

    [ColD] = @ColD,

    [ObjectID] = @objectID

    WHERE [ObjectID] = @objectID;

    PS You may want to update your original post and remove a USE statement that still contains what looks like real info.

    There are no special teachers of virtue, because virtue is taught by the whole community.
    --Plato