Так что я весь день копался в сети, чтобы найти ответ на этот вопрос.У меня есть таблица, которая выглядит так:
CREATE TABLE ldap_domains (
domain varchar(128) NOT NULL,
name varchar(16) NOT NULL,
description varchar(32) NOT NULL
)
ALTER TABLE ldap_domains
ADD CONSTRAINT pk_domain PRIMARY KEY (domain);
INSERT INTO ldap_domains VALUES ('test', 'test', 'test');
INSERT INTO ldap_domains VALUES ('test1', 'test', 'test');
INSERT INTO ldap_domains VALUES ('test2', 'test', 'test');
INSERT INTO ldap_domains VALUES ('test3', 'test', 'test');
Мне нужно изменить эту таблицу, чтобы новый столбец стал первичным ключом.Как часть этого мне нужно обновить новый столбец с уникальными значениями до применения ограничения.Это выглядит так:
ALTER TABLE ldap_domains
DROP CONSTRAINT pk_domain;
ALTER TABLE ldap_domains
ADD id int;
DECLARE @key int
SET @key = 0
UPDATE ldap_domains SET @key = id = @key + 1;
ALTER TABLE ldap_domains
ALTER COLUMN id int NOT NULL;
ALTER TABLE ldap_domains
ADD CONSTRAINT pk_id PRIMARY KEY (id);
Это работает, как и ожидалось, с SQLServer, однако мне нужно, чтобы это работало и для Oracle.По сути, раздел Oracle не нравится:
DECLARE @key int
SET @key = 0
UPDATE ldap_domains SET @key = id = @key + 1;
Может кто-нибудь просветить меня?