PostgreSQL – CREAR DOMINIO

PostgreSQL admite la creación de tipos de datos definidos por el usuario mediante las siguientes declaraciones: 
 

  • CREAR DOMINIO: crea un tipo de datos definido por el usuario que puede tener restricciones opcionales. 
     
  • CREAR TIPO: a menudo se aplica para crear un tipo compuesto (tipo de datos que son mezclas de dos o más tipos de datos) utilizando procedimientos almacenados. 
     

CREAR DOMINIO: 
en PostgreSQL, un dominio es un tipo de datos que tiene restricciones opcionales. Es imprescindible tener un nombre único y un rango de esquema bien definido. 

Ejemplo: 
Primero, creamos una tabla (digamos, hoja de calificaciones) usando el siguiente comando: 
 

CREATE TABLE marksheet (
    student_id SERIAL PRIMARY KEY,
    first_name VARCHAR NOT NULL,
    last_name VARCHAR NOT NULL,
    email VARCHAR NOT NULL,
    marks_obtained INT NOT NULL, 
    CHECK (
        first_name !~ '\s'
        AND last_name !~ '\s'
    )
);

Los campos first_name y last_name no son nulos y no deben contener espacios. Para la simplicidad de los profesores, podemos crear un dominio student_detail usando el siguiente comando: 
 

CREATE DOMAIN student_detail AS 
    VARCHAR NOT NULL CHECK (value !~ '\s');

Ahora podemos usar student_detail como el tipo de datos de los campos first_name y last_name de la siguiente manera: 
 

CREATE TABLE marksheet (
    student_id serial PRIMARY KEY,
    first_name student_detail,
    last_name student_detail,
    marks_obtained INT NOT NULL,
    email VARCHAR NOT NULL
);

Ahora inserte algunos datos en la tabla usando el siguiente comando: 
 

INSERT INTO marksheet (first_name, last_name,marks_obtained, email)
VALUES
    (
        'Raju K',
        'Singh',
     95,
        'rajukumar@gmail.com'
    );

En esta etapa, PostgreSQL generará el siguiente error: 
 

ERROR:  value for domain marksheet violates check constraint "marksheet_check"

Entonces, el comportamiento es como esperábamos. Para modificar o eliminar un dominio, se puede hacer uso de ALTER DOMAIN o DROP DOMAIN respectivamente. 
Para obtener todos los dominios en la base de datos actual, use el siguiente comando: 
 

\dD

Producción: 
 

Publicación traducida automáticamente

Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *