Respondiendo a una pregunta relacionada (SELECT * EXCEPT), señalo que el lenguaje realmente relacional Tutorial D permite que la proyección se exprese en términos de los atributos que se eliminarán en lugar de los que deben conservarse, p.
my_relvar { ALL BUT description }
Sin embargo su sintaxis INSERT
requiere constructores de datos tupla para incluir atribuyen pares nombre/valor, por ejemplo,
INSERT P
RELATION
{
TUPLE { PNO PNO ('P1') , PNAME CHARACTER ('Nut') },
TUPLE { PNO PNO ('P2') , PNAME CHARACTER ('Bolt') }
};
Por supuesto, con esta sintaxis no existe una ordenación columna (porque es verdaderamente relacional!), Por ejemplo, esto es semánticamente equivalente:
INSERT P
RELATION
{
TUPLE { PNO PNO ('P1') , PNAME CHARACTER ('Nut') },
TUPLE { PNAME CHARACTER ('Bolt') , PNO PNO ('P2') }
};
La alternativa sería confiar completamente en el orden de los atributos, lo que SQL hace parcialmente, p.este es un SQL equivalente cercano a la anterior:
INSERT INTO P (PNO , PNAME)
VALUES
(PNO ('P1') , CAST ('Nut' AS VARCHAR (20))) ,
(PNO ('P2') , CAST ('Bolt' AS VARCHAR (20)));
Una vez que el commalist de columnas se ha especificado las VALUES
constructores de registros tienen el mantener este orden, que no es lo ideal. Pero al menos se especifica el orden: su propuesta se basaría en alguna orden predeterminada que posiblemente no sea determinista.
Necesita especificar las columnas ... – JNK
Suena como un caso de programación perezosa. Si hace clic con el botón derecho en el nombre de la tabla, puede "escribir como -> insertar en", y todas las columnas que no sean de identidad se escribirán para usted. Shazam. –
YoOu debería beneficiar al rendimiento de la base de datos a largo plazo, no a usted mismo. Aceptaste la peor respuesta del grupo porque duplica el trabajo cada vez que se ejecuta lo que la consulta correcta tomaría y todo para ahorrarte un poco de tiempo. – HLGEM