Estoy creando una VISTA de 3 TABLAS. Cada TABLA tiene su clave primaria. Sin embargo, en la VISTA con el fin de tener una clave principal, voy a tener que usar una clave principal compuesta (combinación de las claves primarias de las 3 TABLAS).

Sin embargo, me gustaría añadir una columna en la VISTA como una clave principal que es creado sólo para el propósito de la VISTA. Como parte de la definición de la VISTA, debe ser ÚNICO(autoincrement ya sería todo un INT). ¿Cómo puedo lograr esto?

Estoy usando MySQL 5.1

InformationsquelleAutor Kabeer | 2009-12-28

4 Comentarios

  1. 0

    usted puede utilizar varios métodos para insertar un IDENTIFICADOR único a la vista de los datos, tales como:

    SELECT @rownum:[email protected]rownum+1 as id, mytable.*
    FROM (SELECT @rownum:=0) r, mytable;

    Sin embargo, esto es no una clave principal, no es constante y va a cambiar cuando cambian los datos.

    ¿Qué es exactamente lo que usted necesita una clave para?

    • Pablo, inspirado de su pensamiento, ahora estoy en la concatenación de tres llaves y haciendo una clave ÚNICA de salir de ella. Honestamente, lo mío no es un requisito de la clave PRIMARIA, pero que de una clave ÚNICA. Gracias.
    • pablo, si aplica esta a la vista, por ejemplo, no se da necesariamente id en orden. se le da un identificador único, pero no en orden. bien, una simple solución es crear una tabla temporal (a través de insertar desde un punto de vista, por ejemplo) que tiene un campo autonumérico. esto obligaría a recrear la tabla cada vez que se cambian los datos, pero que podría ser fácilmente llevado a cabo en php o java.
    • Como David Clifton dijo que no se puede crear una vista con SELECT @rownum:[email protected]+1 as id, mytable.* FROM (SELECT @rownum:=0) r, mytable; desea obtener un 1351 error
  2. 11

    La más votada respuesta usando

    SELECT @rownum:[email protected]rownum+1 as id, mytable.*
    FROM (SELECT @rownum:=0) r, mytable;

    Es incorrecta – usted no puede crear una vista en mysql que utiliza un sub-seleccione en el DE. Eres única opción es el tratamiento de un conjunto de columnas como una clave compuesta.

    • Y MySQL no soporta vistas indizadas, por lo que se acaba de contestar cómo obtener un identificador único. De todos modos, +1 para señalarla.
    • Usted puede incluso utilizar variables en un selecto que va a crear una vista. De acuerdo, la solución es una clave compuesta.
  3. 4

    Vistas no tienen claves primarias o índices – mysql, el motor va a utilizar los índices y claves definidas en la tabla base(s).

    • Su razón. Honestamente, lo mío no es un requisito de la clave PRIMARIA, pero que de una clave ÚNICA. Ahora soy la concatenación de tres llaves y haciendo una clave ÚNICA de salir de ella.
  4. 0

    Una vista es simplemente un almacenados sub-consulta. La idea de un PK es irrelevante.

    …a menos que necesite una vista indizada, en cuyo caso se necesita un Índice Agrupado en la vista (pero no necesariamente una Clave Principal)

    (aunque, estoy hablando de SQL Server… no estoy seguro de cómo esto se traduce en MySQL)

Dejar respuesta

Please enter your comment!
Please enter your name here