terça-feira, 30 de dezembro de 2008

Oracle - Pl/SQL No Alter Table: Constraints e Checks, sem usar o comando

No artigo anterior demonstrei varias possibilidades de usar o camando “ALTER TABLE” no Oracle. Contudo, algumas vezes acho mais conveniente para mim definir as constraints e checks imediatamente quando estou criado a tabela. Acho que para a prática de documentação, versionamento de código/script, se toda a definição estiver no mesmo comando é mais eficiente o versionamento do script da tabela durante a evolução e manutenção do banco de dados.
A partir do que foi exemplificado no artigo anterior, vou definir todas as constraints e checks na criação das tabelas “ENDERECO_ZN” e “Tipo_EnderecoZN”. Veja a seguir ...


DROP TABLE TIPO_ENDERECOZN;
CREATE TABLE TIPO_ENDERECOZN (
  TIPO_ENDERECOID NUMBER(10) NOT NULL,
  TIPO_ENDERECO VARCHAR2(100) NOT NULL,
  DATACADASTRO DATE NOT NULL,
  CONSTRAINT PK_TIPO_ENDEZN PRIMARY KEY (TIPO_ENDERECOID),
  CONSTRAINT CHK_TIPO_ENDERECO CHECK (LENGTH(TIPO_ENDERECO) > 5),
  CONSTRAINT CHK_DATACADASTRO_TP CHECK (DATACADASTRO > TO_DATE('31/12/2000', 'DD/MM/YYYY'))
);

Na linha 1, primeiro excluo a tabela do banco, para em seguida recriá-la.
a partir da linha 6 começamos a definir as constraints.
Na Lina 6, defino quem é a chave primária.
Na linha 7 validação para a coluna “TIPO_ENDERECO”.
Na linha 8 validação para a coluna “DATACADASTRO”.

Agora vamos fazer o mesmo para a tabela “ENDERECO_ZN”:
DROP TABLE ENDERECO_ZN;
CREATE TABLE ENDERECO_ZN
(
 ENDERECO_ZNID    NUMBER(10) NOT NULL,
 TIPO_ENDERECOID NUMBER(10),
 LOGRADOURO       VARCHAR2(130) NOT NULL,
 COMPLEMENTO      VARCHAR2(170),
 BAIRRO           VARCHAR2(50),
 CIDADE           VARCHAR2(50),
 ESTADO           VARCHAR2(2),
 CEP              VARCHAR2(10),
 NUMERO           VARCHAR2(10),
 DATACADASTRO     DATE NOT NULL,
 CONSTRAINT PK_ENDERECOZN PRIMARY KEY (ENDERECO_ZNID),
 CONSTRAINT FK_ENDERECO_ZN_TP_END FOREIGN KEY (TIPO_ENDERECOID) REFERENCES TIPO_ENDERECOZN (TIPO_ENDERECOID),
 CONSTRAINT CHK_ESTADO CHECK (LENGTH(ESTADO) > 1),
 CONSTRAINT CHK_CIDADE CHECK (LENGTH(CIDADE) > 4),
 CONSTRAINT CHK_DATACADASTRO CHECK (DATACADASTRO > TO_DATE('31/12/2000', 'DD/MM/YYYY'))

);


Nenhum comentário:

Postar um comentário

 
BlogBlogs.Com.Br