Операция не выполнена, так как индекс или статистика с именем 'XPKUSERS' - PullRequest
0 голосов
/ 10 июня 2019

Требуется помощь в понимании ошибки «Операция не удалась из-за индекса или статистики с именем« XPKUSERS »» и помощь в преобразовании запроса в TSQL

CREATE TABLE TDM_USERS_AUTH 
(
  USER_ROLE_ID VARCHAR(3) NOT NULL 
, ROLE VARCHAR(100) NOT NULL 
, USER_ID VARCHAR(15) NOT NULL 
);
CREATE UNIQUE INDEX XPKUSERS ON TDM_USERS_AUTH (USER_ROLE_ID ASC);
ALTER TABLE TDM_USERS_AUTH
ADD CONSTRAINT XPKUSERS PRIMARY KEY 
(
  USER_ROLE_ID 
)
USING INDEX XPKUSERS;

Сообщение 1913, Уровень 16, Состояние 1, Строка 1
Операция не выполнена, так как в таблице «TDM_USERS_AUTH» уже существует индекс или статистика с именем «XPKUSERS».
Сообщение 1750, уровень 16, состояние 0, строка 1
Не удалось создать ограничение или индекс. Смотрите предыдущие ошибки.

1 Ответ

2 голосов
/ 10 июня 2019

Предложение USING INDEX является синтаксисом, специфичным для Oracle. В SQL Server новый индекс всегда создается при создании первичного ключа. Вы можете выбрать, является ли новый индекс кластеризованным (по умолчанию) или не кластеризованным.

Вы можете просто создать ПЕРВИЧНЫЙ КЛЮЧ (без создания индекса раньше), например:

CREATE TABLE TDM_USERS_AUTH 
(
  USER_ROLE_ID VARCHAR(3) NOT NULL 
, ROLE VARCHAR(100) NOT NULL 
, USER_ID VARCHAR(15) NOT NULL 
);
ALTER TABLE TDM_USERS_AUTH
ADD CONSTRAINT XPKUSERS PRIMARY KEY 
(
  USER_ROLE_ID 
);

Вы также можете указать первичный ключ при создании таблицы:

CREATE TABLE TDM_USERS_AUTH 
(
  USER_ROLE_ID VARCHAR(3) NOT NULL CONSTRAINT XPKUSERS PRIMARY KEY 
, ROLE VARCHAR(100) NOT NULL 
, USER_ID VARCHAR(15) NOT NULL 
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...