Anterior Sumário Próximo OpenBASE! o Banco de Dados inteligente. Fale conosco!

MODIFY

Propósito

Alterar os valores do último registro lido no arquivo selecionado.

Sintaxe

MODIFY [SAME] [CASCADE | KEYINFO | SETNULL]

Argumentos

SAME         determina que a alteração só se efetuará caso o conteúdo do registro não tenha sido alterado entre a leitura e a gravação. Caso ocorra alteração do registro durante a transação função DBERR() retorna 333.

CASCADE     permite a alteração do valor da chave primária, alterando também o valor das chaves estrangeiras nos registros subordinados ao registro corrente.

KEYINFO     atualiza as chaves estrangeiras dos registros subordinados segundo a informação contida no dicionário de dados.

SETNULL     coloca nulo nas chaves estrangeiras dos registros subordinados.

Utilização

O comando MODIFY só se aplica a arquivo de banco de dados. Este comando é utilizado para alterar o valor de itens chave, a não ser quando se tratar de chaves primárias de arquivos entidades.

Desta forma, o comando MODIFY garante que a referência entre os registros não seja perdida e o banco de dados permaneça íntegro.

Caso haja tentativa de alteração de chave primária, a função DBERR( ) retorna 321 (tentativa de alteração de item chave), exceto quando utilizado com as opções CASCADE, KEYINFO ou SETNULL. Do contrário para alterar uma chave primária, deve-se incluir um novo registro com o valor da nova chave e excluir o registro com o valor antigo.

Quando utilizado com a opção CASCADE, a modificação é feita da seguinte forma: é alterado o valor da chave primária no registro corrente e logo após são alterados os valores das chaves estrangeiras subordinadas ao registro corrente. Esta opção representa uma alteração em cadeia hierárquica.

Quando utilizado com a opção KEYINFO, a modificação é feita dependendo da informação definida no esquema do banco de dados. Para cada opção de atualização o comando MODIFY agirá de maneira particular.

Quando utilizado com a opção KEYINFO, a modificação da chave primária do registro corrente é feita dependendo da informação definida para as chaves estrangeiras do registro corrente. Para cada opção de deleção o comando MODIFY agirá de uma maneira particular.

Opção C (cascata) : Obriga a modificação do valor das chaves estrangeira dos registros subordinados ao registro lido no arquivo selecionado.

Opção S (nulo) : Obriga a colocação de nulo no valor da chave estrangeira. Neste caso a chave estrangeira deve obrigatoriamente ser do tipo nulo.

Opção R (restrito) : Obriga a não modificação do valor da chave estrangeira.

Quando utilizado com a opção SETNULL, as chaves estrangeiras dos registros, subordinados ao registro corrente, são modificadas para nulo e o registro corrente é alterado.

Isto só e possível se a chave estrangeira for do tipo nulo. Caso contrário, não será possível a modificação do registro, retornando um código de erro diferente de zero pela função DBERR( ).

O comando MODIFY, por DEFAULT, não permite a alteração do valor da chave primária, retornando um valor diferente de zero pela função DBERR( ), garantindo a integridade referencial.

Exemplo

O exemplo a seguir mostra-nos como alterar itens chave de um arquivo do banco de dados. Caso ocorra alguma inconsistência no valor das chaves a função DBERR( ) retornará um código diferente de 0 (zero).

* O banco de dados bdemp1 deve existir

DATABASE bdemp1 33 a 2     && Abertura do banco de dados bdemp1

USE tab_nfis     && Arquivo do banco de dados ( ou tabela)

LOCATE 

REPLACE cli_nfis WITH 123, ven_nfis WITH 321, tot_nfis with 10.45

MODIFY

? DBERR( )

O exemplo a seguir tenta alterar o valor de uma chave primária.

DATABASE bdemp1 33 a 2

USE tab_nfis

LOCATE

REPLACE id0_nfis WITH 456

MODIFY

? DBERR( )

O exemplo a seguir mostra-nos como garantir que o registro não foi alterado por outro usuário entre a leitura e a gravação.

DATABASE bdemp1 33 a 2

USE tab_nfis

LOCATE

REPLACE cli_nfis WITH 123, ven_nfis WITH 321, tot_nfis WITH 10.45

* MODIFY SAME verifica antes de gravar se o valor atual

* do registro e o mesmo da leitura

MODIFY SAME

? DBERR()

Consulte

CHANGE, REPLACE, RESTORE, SAVE, SELECT, DBERR( ), EOF( ), FGMODIFY( ), FMODIFY( ) e RECNO( ).

Anterior Sumário Próximo OpenBASE! o Banco de Dados inteligente. Fale conosco!