В ответ на связанный с этим вопрос (SELECT * EXCEPT) я указываю, что действительно реляционный язык Tutorial D позволяет проекции выражать в терминах атрибутов, подлежащих удалению, вместо тех, которые должны храниться, например.
my_relvar { ALL BUT description }
Однако его синтаксис INSERT
требует значений кортежей конструкторы включают в себя атрибут пар имя/значение, например,
INSERT P
RELATION
{
TUPLE { PNO PNO ('P1') , PNAME CHARACTER ('Nut') },
TUPLE { PNO PNO ('P2') , PNAME CHARACTER ('Bolt') }
};
Конечно, используя этот синтаксис не существует упорядоченность столбец (потому что это действительно реляционные!), Например, это семантически эквивалентно:
INSERT P
RELATION
{
TUPLE { PNO PNO ('P1') , PNAME CHARACTER ('Nut') },
TUPLE { PNAME CHARACTER ('Bolt') , PNO PNO ('P2') }
};
Альтернативой было бы полностью полагаться на упорядочение атрибутов, которые SQL выполняет частично, например.это близко SQL-эквивалентно выше:
INSERT INTO P (PNO , PNAME)
VALUES
(PNO ('P1') , CAST ('Nut' AS VARCHAR (20))) ,
(PNO ('P2') , CAST ('Bolt' AS VARCHAR (20)));
После commalist колонн было указано, что VALUES
строк конструкторы имеют поддерживать этот порядок, который не является идеальным. Но как минимум порядок указан: ваше предложение будет опираться на какой-то порядок по умолчанию, который может быть, возможно, недетерминированным.
Вам нужно указать столбцы ... – JNK
Звучит как случай ленивого программирования. Если вы щелкните правой кнопкой мыши по имени таблицы, вы можете «сценарий как -> вставить в», и все столбцы не идентичности будут написаны для вас. Shazam. –
YoOu должен использовать производительность базы данных в долгосрочной перспективе не самостоятельно. Вы восприняли худший ответ на сгусток, потому что он удваивает работу каждый раз, когда он запускается над тем, что будет делать правильный запрос, и все, чтобы сэкономить немного времени. – HLGEM