Cómo utilizar las restricciones en las bases de datos SQL multimesa
LA restricción
es una regla de aplicación que el DBMS hace cumplir en SQL. Después de definir una base de datos, puede incluir restricciones (como NO NULO) En una definición de la tabla. El DBMS se asegura de que nunca se puede cometer cualquier transacción que viola una restricción.Usted tiene tres tipos de limitaciones:
LA restricción de columna impone una condición en una columna en una tabla.
LA mesa de restricción pone una restricción especificada en una tabla entera.
Un afirmación es una restricción que puede afectar a más de una tabla.
Restricciones de columna
Un ejemplo de una restricción de la columna se muestra en la siguiente instrucción Data Definition Language (DDL):
CREAR CLIENTE MESA (ClientName CHAR (30) NOT NULL, Address1 CHAR (30), Address2 CHAR (30), CityCHAR (25), StateCHAR (2), PostalCode CHAR (10), PhoneCHAR (13), FaxCHAR (13), Persona de contacto CHAR (30)) -
La declaración se aplica la restricción NO NULO al Nombre de Cliente columna, especificando que Nombre de Cliente no podrá suponer un valor nulo. UNIQUE es otro obstáculo que se puede aplicar a una columna. Esta restricción especifica que todos los valores de la columna debe ser único. los CHEQUE restricción es particularmente útil, ya que puede tomar cualquier expresión válida como argumento. Considere el siguiente ejemplo:
CREAR LAS PRUEBAS DE MESA (TestName CHAR (30) NOT NULL, StandardCharge NUMÉRICO (6,2) CHECK (StandardCharge> = 0.0AND StandardCharge lt; = 200,0)) -
Carga estándar de VetLab para una prueba siempre debe ser mayor que o igual a cero. Y ninguna de las pruebas estándar cuesta más de $ 200. los CHEQUE cláusula se niega a aceptar las entradas que se encuentran fuera del rango 0 lt; = StandardCharge lt; = 200. Otra forma de expresar la misma restricción es como sigue:
CHECK (StandardCharge entre 0.0 y 200.0)
Restricciones de tabla
los PRIMARY KEY restricción especifica que la columna a la que se aplica es una clave principal. Esta restricción se aplica a toda la tabla y es equivalente a una combinación de la NO NULO y UNIQUE restricciones de columna. Puede especificar esta restricción en una CREAR declaración, como se muestra en el siguiente ejemplo:
CREAR CLIENTE MESA (ClientName CHAR (30) PRIMARY KEY, Address1 CHAR (30), Address2 CHAR (30), CityCHAR (25), CHAR Estado (2), PostalCode CHAR (10), Teléfono CHAR (13), FaxCHAR (13 ), Persona de contacto CHAR (30)) -
Restricciones con nombre pueden tener algunas funciones adicionales. Supongamos por ejemplo, que usted quiere hacer una carga masiva de varios miles de clientes potenciales en su mesa de perspectiva. Usted tiene un archivo que contiene la mayoría de las perspectivas en Estados Unidos, pero con algunas perspectivas canadienses salpicadas por todo el archivo.
Normalmente, desea restringir su mesa perspectiva para incluir las perspectivas de Estados Unidos solamente, pero no desea que esta carga a granel para ser interrumpido cada vez que golpea a uno de los registros canadienses. (Códigos postales canadienses incluyen letras y números, pero los códigos postales de Estados Unidos sólo contienen números.) Usted puede optar por no aplicar una restricción en Codigo postal hasta que la carga a granel es completa, y entonces usted puede restaurar la aplicación de la restricción más tarde.
Inicialmente, su mesa PERSPECTIVA fue creado con el siguiente CREATE TABLE declaración:
CREATE TABLE PERSPECTIVA (ClientName CHAR (30) PRIMARY KEY, Address1 CHAR (30), Address2 CHAR (30), CityCHAR (25), CHAR Estado (2), PostalCode CHAR (10), Teléfono CHAR (13), FaxCHAR (13 ), Persona de contacto CHAR (30), CONSTRAINT Zip CHECK (PostalCode entre 0 y 99999)) -
Antes de la carga a granel, puede desactivar la aplicación de la Zip restricción:
ALTER TABLE PROSPECTCONSTRAINT NO Zip ENFORCED-
Después de la carga a granel es completa, puede restaurar la aplicación de la restricción:
ALTER TABLE PROSPECTCONSTRAINT ENFORCED- postal
En este punto, usted puede eliminar las filas que no cumplen con la restricción:
DELETE FROM PROSPECTWHERE PostalCode NO ENTRE 0 Y 99 999 -
Aseveraciones
Un afirmación especifica una restricción para más de una tabla. El ejemplo siguiente utiliza una condición de búsqueda procedentes de dos tablas para crear una afirmación:
CREAR LAS ÓRDENES DE MESA (OrderNumber INTEGER NOT NULL, ClientName CHAR (30), TestOrdered CHAR (30), Vendedor de CHAR (30), FECHA FechaPedido) RESULTADOS TABLA -create (ResultNumber INTEGER NOT NULL, OrderNumber INTEGER, ResultCHAR (50), DateOrdered FECHA , PrelimFinal CHAR (1)): Para crear ASSERTIONCHECK (NO EXISTE (SELECT * FROM PEDIDOS, RESULTSWHERE ORDERS.OrderNumber = RESULTS.OrderNumberAND Orders.OrderDate> RESULTS.DateReported)) -
Esta afirmación se asegura de que los resultados de las pruebas no se informan antes de que se ordenó la prueba.