Alter column set not null ausfällt

Betrachten wir die folgende Tabelle mit etwa 10M Zeilen

CREATE TABLE user
(
  id bigint NOT NULL,
  ...
  CONSTRAINT user_pk PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
)

Dann habe ich das folgende alter

ALTER TABLE USER ADD COLUMN BUSINESS_ID    VARCHAR2(50);
--OK
UPDATE USER SET BUSINESS_ID = ID; //~1500 sec
--OK
ALTER TABLE USER ALTER COLUMN BUSINESS_ID SET NOT NULL;

    ERROR: column "business_id" contains null values
    SQL state: 23502

Dies ist sehr seltsam, da die Spalte id (die kopiert wurde, um business_id Spalte) kann nicht null-Werte enthalten, da es der Primärschlüssel, aber um sicher zu sein ich check es

select count(*) from USER where BUSINESS_ID is null
    --0 records

Ich vermute, dass das ein bug ist, einfach Fragen, wenn mir etwas fehlt trivial

Ich hab keine Ahnung, warum das passieren würde. Vielleicht versuchen Sie das UPDATE mit einem expliziten cast: UPDATE "user" set business_id = ID::VARCHAR
Es gibt eine chance, Sie ist mit der Tatsache, dass der "Benutzer" ist ein reserviertes Wort, aber ich weiß es nicht wirklich. Reservierte Wörter-Liste: postgresql.org/docs/current/static/sql-keywords-appendix.html
Es gibt keine Art VARCHAR2 in Postgres. Etwas aus in Ihrem queston ..
Benutzer ist nicht der tatsächliche name der Tabelle, die ich gerade es vereinfacht zu schreiben, die Frage
Brandstetter Datenbank EnterpriseDB mit oracle-Kompatibilität aktiviert

InformationsquelleAutor dimcookies | 2013-10-23

Schreibe einen Kommentar