
Suprimir um registro.
DELETE [CASCADE | KEYINFO | SETNULL]
|
CASCADE |
determina que os registros subordinados ao registro excluído também sejam excluídos. |
|
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. |
Suprime o último registro lido no arquivo selecionado. Tanto pode ser um arquivo de banco de dados como um arquivo externo.
A supressão de um registro é feita de forma física, isto é, o registro tem seu conteúdo removido do arquivo de dados e de seus índices.
Em arquivos OpenBASE os registros suprimidos ocupam espaço para futuras inclusões. Isto agiliza o processo de exclusão e inclusão de registros, porque não é feita uma reorganização do arquivo na exclusão e nem o tamanho do arquivo é alterado durante a inclusão.
Quando se realiza um número muito grande de exclusões, o arquivo passa a ocupar espaço desnecessário. Quando isso ocorrer, sugere-se que se faça uma manutenção no banco ou nos arquivos que apresentem tais características.
Quando utilizado com a opção CASCADE, são excluídos primeiramente os registros dos arquivos subordinados ao registro corrente, se estes tiverem subordinações estas também serão excluídas. Esta opção representa uma exclusão em cadeia hierárquica.
Quando utilizado com a opção KEYINFO, a exclusão 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 DELETE agirá de uma maneira particular.
Opção C (cascata) : Obriga a exclusão 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 exclusão do registro subordinado.
Quando utilizado com a opção SETNULL, as chaves estrangeiras são modificadas para nulo e o registro corrente é removido. Isto só é possível se as chaves estrangeiras forem do tipo nulo.
O comando DELETE, por DEFAULT, não permite a exclusão de registros com ligações, retornando um valor diferente de zero pela função DBERR( ), garantindo a integridade referencial.
O exemplo a seguir mostra como suprimir todos os registros dos funcionários que já se aposentaram.
USE tab_func
LOCATE FOR ino_func = 001
DO WHILE FOUND( )
DELETE
CONTINUE
ENDDO
LOCATE, SEEK, USE, ZAP, DBERR( ), EOF( ), FDELETE( ), FGO( ), FGPDELETE( ) e FEMPTY( ).
