[firebase-br] Nao esta respeitando Uniquei
Cleber Moises Grings
grings em grings.eti.br
Sex Jul 20 09:49:43 -03 2012
Hélio Oliveira <hpensador em ...> writes:
>
> Bom dia Cleber!
>
> Não entendi bem sua colocação quando diz... "outros todos são partes de uma
> UK, os campos da UK são todos inteiros e não obrigatorios".
>
> Se os demais campos compoem uma UK (Unique Key) eles passam a ser
> obrigatórios, ou eu estou errado?
>
> "Cleber Moises Grings" escreveu na notícia da
> mensagem:juadcq$vbs$1 <at> dough.gmane.org...
>
> Temos uma tabela a onde são gravados dados atraves de uma SP
>
> Esta tabela tem alguns poucos campos, um deles é a chave primaria e os
> outros todos são partes de uma UK, os campos da UK são todos inteiros e não
> obrigatorios
> em uma situação a onde são gravados atravez de uma SP ao preencher os os
> dois primeiros campos da UK aceita fazer a operação uma segunda vez sem
> mostrar erro algum, persistindo o dado no DB.
>
> Queria ver se alguem já passou por isto, e o que esta sendo feito de errado,
> para permitir esta gravação?
>
> Grato
>
> Cléber Grings
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
Mais detalhes
a estrutura da tabela esta baixo
O que acontece que esta permitindo inserir registros duplicados
informando apenas o ID diferente
e ID_PROD_ESTQ e ID_ALMOX estes dois campos preenchidos os demais campos com
null, aceita um segundo registro
CREATE GENERATOR GEN_CONFIG_ESTOQUE;
CREATE TABLE CONFIG_ESTOQUE (
ID D_ID NOT NULL /* D_ID = INTEGER NOT NULL */,
ID_PROD_ESTQ D_ID /* D_ID = INTEGER NOT NULL */,
ID_ALMOX D_ID /* D_ID = INTEGER NOT NULL */,
ID_TAB_LOTE D_ID_NO /* D_ID_NO = INTEGER */,
ID_SUBPROD D_ID_NO /* D_ID_NO = INTEGER */,
ID_ENDEST D_ID_NO /* D_ID_NO = INTEGER */,
ID_MASCARA D_ID_NO /* D_ID_NO = INTEGER */,
ID_SERIE D_ID_NO /* D_ID_NO = INTEGER */
);
ALTER TABLE CONFIG_ESTOQUE ADD CONSTRAINT UK_CONFIG_ESTOQUE_UNICO UNIQUE
(ID_PROD_ESTQ, ID_ALMOX, ID_TAB_LOTE, ID_SERIE, ID_SUBPROD, ID_ENDEST,
ID_MASCARA);
ALTER TABLE CONFIG_ESTOQUE ADD CONSTRAINT PK_CONFIG_ESTOQUE PRIMARY KEY (ID);
ALTER TABLE CONFIG_ESTOQUE ADD CONSTRAINT FK_CONFIG_ESTOQUE_ALMOX FOREIGN KEY
(ID_ALMOX) REFERENCES ALMOXARIFADO (ID);
ALTER TABLE CONFIG_ESTOQUE ADD CONSTRAINT FK_CONFIG_ESTOQUE_PROD_ESTQ FOREIGN
KEY (ID_PROD_ESTQ) REFERENCES PRODUTO_ESTOQUE (ID);
ALTER TABLE CONFIG_ESTOQUE ADD CONSTRAINT FK_CONFIG_ESTOQUE_SERIE FOREIGN KEY
(ID_SERIE) REFERENCES TAB_SERIE (ID);
ALTER TABLE CONFIG_ESTOQUE ADD CONSTRAINT FK_CONFIG_ESTOQUE_TAB_LOTE FOREIGN
KEY (ID_TAB_LOTE) REFERENCES TAB_LOTE (ID);
/* Trigger: TRG_CONFIG_ESTOQUE_BI0 */
CREATE OR ALTER TRIGGER TRG_CONFIG_ESTOQUE_BI0 FOR CONFIG_ESTOQUE
ACTIVE BEFORE INSERT POSITION 0
AS
begin
if ((new.ID is null) or (new.ID=0)) then
new.ID = Gen_Id(GEN_CONFIG_ESTOQUE,1);
end
^
/* Trigger: TRG_CONFIG_ESTOQUE_BIU0 */
CREATE OR ALTER TRIGGER TRG_CONFIG_ESTOQUE_BIU0 FOR CONFIG_ESTOQUE
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
as
begin
execute procedure SP_UES_VAL_CONFIG_ESTOQUE(new.ID_PROD_ESTQ,
new.ID_TAB_LOTE,
new.ID_SERIE,
new.ID_SUBPROD);
end
^
SET TERM ; ^
Mais detalhes sobre a lista de discussão lista