So I've been digging around on the net all afternoon to find the answer to this. I have a table that looks like so:
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');
I need to modify this table so that a new column becomes the primary key. As part of this I need to update the new column with unique values before the constraint is applied. This looks like so:
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);
This works as expected with SQLServer, however, I need this to work for Oracle as well. Essentially the section Oracle doesn't like is:
DECLARE @key int
SET @key = 0
UPDATE ldap_domains SET @key = id = @key + 1;
Can anyone enlighten me?