Помогите с ограничением - PullRequest
2 голосов
/ 31 мая 2011

Я создаю таблицу, и одно из ограничений заключается в том, что первым символом должно быть «G», а затем 5 цифр:

CREATE TABLE PHONE (
  PHONEID CHAR (6) NOT NULL,
  PHONENO NUMERIC NOT NULL,
  CONSTRAINT PHONE_PHONEID_PK PRIMARY KEY (PHONEID),
  CONSTRAINT PHONE_PHONENO_UK UNIQUE (PHONENO)
);

Как мне это сделать с помощью sql? Мне нужно сделать это, чтобы позвонил

Ответы [ 2 ]

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

В MS SQL это будет выглядеть так:

create table Phone
(
    PhoneId char(6) not null
        constraint Phone_PhoneId_PK primary key
        constraint Phone_PhoneId_CK check (PhoneId like 'G[0-9][0-9][0-9][0-9][0-9]'),
    PhoneNumber numeric not null
        constraint Phone_PhoneNumber_UK unique
)

insert Phone
values('G00001', 123) -- pass

insert Phone
values('G0001', 123)  -- fail

insert Phone
values('D0001', 123) -- fail
1 голос
/ 31 мая 2011

В Oracle я думаю, что это будет:

CREATE TABLE PHONE (
  PHONEID CHAR (6) NOT NULL,
  PHONENO NUMERIC NOT NULL,
  CONSTRAINT PHONE_PHONEID_PK PRIMARY KEY (PHONEID),
  CONSTRAINT PHONE_PHONENO_UK UNIQUE (PHONENO),
  CONSTRAINT PHONE_PHONEID_CK CHECK(REGEX_LIKE(PHONEID, '^G\d{5}$'))
);

* Отказ от ответственности: я давно работал с Oracle, у меня нет доступа к базе данных Oracle для проверкивыше, и это основано на документации Проверьте ограничения и функцию REGEXP_LIKE.Может потребоваться некоторая настройка.

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