реализовать уникальность, ограничения при вставке данных в столбец с другим столбцом - PullRequest
1 голос
/ 05 марта 2011

У меня есть таблица A с колонками Aname, Work

create table A(Aname varchar(40) , Work varchar(40) )

В таблицу уже вставлены следующие данные:

INSERT INTO A VALUES ('GREAME ','PLAYER')

Aname ||Работа

GREAME PLAYER

Теперь я хочу, чтобы, когда я вставлял новую запись, Aname - GREAME, Work --- SALESMAN, тогда она вставлялась

, но еслиЯ вставляю это: Aname - GREAME Work - PLAYER снова, затем он не вставляется

Я хочу это:

Aname ||Работа

GREAME PLAYER

GREAME PLAYER --- НЕ МОЖЕТ ВСТАВИТЬ

GREAME SALESMAN --- МОЖЕТ БЫТЬ ВСТАВЛЕН

столбец Работа проверяет уникальность, когда значение Aname

для вставки уже существует.

Как мне это реализовать?Пожалуйста, помогите с кодом.

EDIT ------

в запросе вставки, столбец Aname будет выбран из другой таблицы B, тогда как мне это сделать?

Ответы [ 2 ]

3 голосов
/ 05 марта 2011

Уникальное ограничение или первичный ключ не допустят вставки с ошибкой / исключением.Эта вставка просто не вставит строку, в которой она уже существует.

insert into A (Aname, Work)
select 'GREAME', 'PLAYER'
where not exists (select *
                  from A
                  where Aname = 'GREAME' and Work = 'PLAYER')
1 голос
/ 05 марта 2011

А если вам нужно, чтобы комбинация AName и Work была уникальной,

ALTER TABLE A ADD CONSTRAINT U_NameWork UNIQUE(AName, Work)

Но если вам нужно, чтобы AName был уникальным независимо от работы,

ALTER TABLE A ADD CONSTRAINT U_Name UNIQUE(AName)

Редактировать: Согласно SanjeevKumar, создание (AName, Work) составного PRIMARY KEY также будет работать при условии, что у вас нет другого PK, хотя вы также можете рассмотреть вопрос о замене PK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...