Справка по SQL-ключу - PullRequest
       2

Справка по SQL-ключу

1 голос
/ 30 мая 2011

Используя sql, мне нужно превратить Lineno и orderline в составной ключ, как я могу это сделать, пока у меня есть

CREATE TABLE ORDERLINE (
   ORDERNO INTEGER NOT NULL, 
   LINENO VARCHAR(4) NOT NULL, 
   NUMBERORDERED NUMERIC DEFAULT '1', 
   QUOTEDPRICE NUMERIC DEFAULT '0.00', 
   CONSTRAINT ORDERLINE_ORDERNO_PK PRIMARY KEY (ORDERNO), 
   CONSTRAINT ORDERLINE_ORDERNO_CC CHECK (ORDERNO BETWEEN 10000 AND 99999), 
   CONSTRAINT ORDERLINE_NUMBERORDERED CHECK (NUMBERORDERED BETWEEN 1 AND 100) 
);

Ответы [ 2 ]

3 голосов
/ 30 мая 2011
CREATE TABLE ORDERLINE (
    ORDERNO INTEGER NOT NULL,
    LINENO VARCHAR(4) NOT NULL,
    NUMBERORDERED NUMERIC DEFAULT '1',
    QUOTEDPRICE NUMERIC DEFAULT '0.00',
    CONSTRAINT ORDERLINE_ORDERNO_PK PRIMARY KEY(ORDERNO, LINENO), -- note alteration on this line
    CONSTRAINT ORDERLINE_ORDERNO_CC CHECK (ORDERNO BETWEEN 10000 AND 99999),
    CONSTRAINT ORDERLINE_NUMBERORDERED CHECK (NUMBERORDERED BETWEEN 1 AND 100)
);

Ты очень близко.Обратите внимание на добавление названия столбца выше.

Определите, какое поле с большей вероятностью будет ведущим столбцом в любом запросе, и поставьте его первым.Например;если вы часто обращаетесь к OrderNO, LineNo будет лучшим заказом, если, однако, вы обращаетесь к LineNo, OrderNO следует этому заказу.

2 голосов
/ 30 мая 2011

Если вы уже создали таблицу, вы можете удалить существующий первичный ключ (предположительно, ORDERNO), а затем заново создать первичный ключ в двух столбцах, например:

ALTER TABLE `orderline`  DROP PRIMARY KEY;
ALTER TABLE `orderline`  ADD PRIMARY KEY (`ORDERNO`, `LINENO`);

Кроме того, вы можете определить первичный ключ в вашем операторе создания таблицы, например:

CREATE TABLE `orderline` (
    ORDERNO INTEGER NOT NULL, 
    LINENO VARCHAR(4) NOT NULL, 
    NUMBERORDERED NUMERIC DEFAULT '1', 
    QUOTEDPRICE NUMERIC DEFAULT '0.00',
    PRIMARY KEY (`ORDERNO`,`LINENO`),
    CONSTRAINT ORDERLINE_ORDERNO_CC CHECK (ORDERNO BETWEEN 10000 AND 99999), 
    CONSTRAINT ORDERLINE_NUMBERORDERED CHECK (NUMBERORDERED BETWEEN 1 AND 100) 
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...