Veja este update simples, por isso acho que não teria como não funcionar, mas não funcionou. O que falta? Acho que nada, uso FB. Abaixo a tabela e as constraints.
UPDATE
TB_SAC_TRANSF
SET
CD_ST_RECEB = 1
WHERE
CD_TRANSF = ´R´ AND
NU_LOJA_ORIG = 15 AND
NU_LOJA_DEST = 51 AND
NU_NF = 28748 AND
SR_NF = ´M1´ AND
DT_TRANSF = ´01/03/2008´
//Tabela
TB_SAC_TRANSF (
CD_TRANSF CHAR(2) CHARACTER SET NONE NOT NULL COLLATE NONE,
NU_LOJA_ORIG INTEGER NOT NULL,
NU_LOJA_DEST INTEGER NOT NULL,
NU_NF INTEGER NOT NULL,
SR_NF CHAR(2) CHARACTER SET NONE NOT NULL COLLATE NONE,
DT_TRANSF DATE NOT NULL,
VL_TRANSF NUMERIC(15, 2) NOT NULL,
CD_TP_TRANSP SMALLINT,
CD_ST_TRANSF SMALLINT,
CD_ST_RECEB SMALLINT NOT NULL,
QT_TRANSF INTEGER NOT NULL
//Constraint
ALTER TABLE TB_SAC_TRANSF ADD PRIMARY KEY (CD_TRANSF,DT_TRANSF,NU_LOJA_ORIG,NU_LOJA_DEST,NU_NF,SR_NF);
ALTER TABLE TB_SAC_TRANSF ADD FOREIGN KEY (CD_TP_TRANSP) REFERENCES TB_SAC_TP_TRANSPORTE(CD_TP_TRANSP);
ALTER TABLE TB_SAC_TRANSF ADD FOREIGN KEY (CD_ST_RECEB) REFERENCES TB_SAC_ST_RECEB(CD_ST_RECEB);
ALTER TABLE TB_SAC_TRANSF ADD FOREIGN KEY (CD_ST_TRANSF) REFERENCES TB_SAC_ST_TRANSF(CD_ST_TRANSF);
CREATE UNIQUE INDEX TRANSF_PK ON TB_SAC_TRANSF(CD_TRANSF,DT_TRANSF,NU_LOJA_ORIG,NU_LOJA_DEST,NU_NF,SR_NF);