Hola Francisco,

Francisco Martagón Gordillo escribió:
> Hola:
> 
> Un compañero del foro de soporte hace la siguiente pregunta. La posteo
> aquí porque sé que hay algunos expertos que no desean registrarse en el
> foro. Espero que no moleste a nadie, sólo quiero echar una mano. Si hago
> algo incorrecto ruego me informen.

pues deberías decirle que se suscriba también a estas listas, a no ser
que no te moleste jugar al palomo mensajero (pues verás abajo que le
falta información)


> Aquí va la consulta que hace en dos mensajes:
> 
> = = = = = = =
> Hola a todo el mundo. No se si este mensaje está bien escrito aquí, por
> si toca escribirlo en la parte de "principiantes" pero allí va.
> Estoy haciendo una base de datos, y necesito crear restricciones a dos
> tablas por lo menos. En la vista de diseño no da esa opción y en la del
> asistente tampoco. Como estoy viendo, se pueden crear vistas y consultas
> en SQL. Quería saber si hay alguna forma de crear, o editar, la tabla en
> SQL para poder poner la restricción que me hace falta.
> 
> = = = = = = =
> 
> Ante todo, gracias por la atención que me has prestado. Veras, con
> "restricciones" me refiero a los triggers y la sentencia "constrains"
> del SQL. En una de las tablas que tengo en mi base de datos, tengo una
> restricción, la cual es que como máximo sólo puede haber dos apuntes
> distintos con un subconjunto de campos con valores iguales pero las
> tablas tienen una relación de uno a muchos. Creo que, si presto atención
> y repaso, puedo respetar la restricción yo, pero mi bd la van a usar
> otras personas.
> Lo que digo es que me interesaría saber, si es que se puede, cómo editar
> o crear una tabla en SQL para ver como le puedo poner esta restricción a
> la tabla o si esto que planteo se puede hacer de otra manera. Espero que
> mi explicación sea correcta y gracias de nuevo. Un saludo.
> 
> = = = = = = =
> 
> Espero que puedan ayudarle, y así de paso aprendo algo nuevo sobre SQL y
> BASE.
> 
> Un saludo.

la información elemental que falta es:
¿con qué tipo de base de datos está trabajando?
¿se trata con un archivo de OOo Base (*.odb), que contiene la base de
datos embebida, es decir que los datos están dentro de ese archivo? ¿o
está empleando un verdadero RDBMS, tipo MySQL o Postgres?

Información vital, pues en HSQLDB los triggers se pueden implementar
sólo como Java classes [== hay que saber programar en Java,
http://hsqldb.org/doc/guide/ch09.html#create_trigger-section](en la
próxima versión se podrán utilizar simplemente sentencias SQL
http://hsqldb.org/web/features190.html

DATA DEFINITION LANGUAGE ENHANCEMENTS

Supports full syntax of SQL TRIGGER definition for row level triggers
using SQL procedure statements (as opposed to Java classes)

CREATE TRIGGER <name> {BEFORE | AFTER}
{INSERT | DELETE | UPDATE [OF (<column name>, ..)]
ON <table name>
[ REFERENCING OLD [ROW] [AS] <old transition variable name> |
NEW [ROW] [AS] <new transition variable name>]
[FOR EACH ROW]
[WHEN (<search contition>)]
<sql procedure statement>

).

Lo mismo se aplica a los CONTRAINTS, HSQLDB tiene diferentes formas de
aplicar constricciones [sic.]:

ALTER TABLE <tablename> ADD [CONSTRAINT <constraintname>]
    CHECK (<search condition>);

ALTER TABLE <tablename> ADD [CONSTRAINT <constraintname>] UNIQUE
(<column list>);

CREATE [MEMORY | CACHED | [GLOBAL] TEMPORARY | TEMP  | TEXT] TABLE <name>
    ( <columnDefinition> [, ...] [, <constraintDefinition>...] )
    [ON COMMIT {DELETE | PRESERVE} ROWS];


donde constraintDefinition es

[CONSTRAINT <name>]
    UNIQUE ( <column> [,<column>...] ) |
    PRIMARY KEY ( <column> [,<column>...] ) |
    FOREIGN KEY ( <column> [,<column>...] )
    REFERENCES <refTable> ( <column> [,<column>...])
    [ON {DELETE | UPDATE}
    {CASCADE | SET DEFAULT | SET NULL}] |
    CHECK(<search condition>)

etc.

En resumidas cuentas, no hay GUI para hacer eso (salvo para las
constricciones relacionadas con relaciones, tamaño de campos, et al.).
Debes hacerlo mediante instrucciones SQL ("Herramientas" - "SQL"), y el
contenido exacto de la instrucción depende del tipo de base de datos/
RDBMS, pues si bien SQL es estándar, cada cual hace la suya...



Saludos
Ariel.

-- 
Ariel Constenla-Haile
La Plata, Argentina


"Aus der Kriegsschule des Lebens
                - Was mich nicht umbringt,
        macht mich härter."
                Nietzsche Götzendämmerung, Sprüche und Pfeile, 8.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Responder a