sql >> Database >  >> RDS >> PostgreSQL

Volgorde in Oracle/PostgreSQL zonder ID in insert-instructie

Oracle 12c introduceert Identiteitskolommen :

CREATE TABLE SOMEUSERS (
  SOMEUSERS_ID       NUMBER(10) GENERATED ALWAYS AS IDENTITY
                     CONSTRAINT SOMEUSERS__SOMEUSERS_ID__PK PRIMARY KEY,
  SOMEUSERS_NAME     VARCHAR2(50)
                     CONSTRAINT SOMEUSERS__SOMEUSERS_NAME__NN NOT NULL,
  SOMEUSERS_PASSWORD VARCHAR2(50)
);

Als je het in eerdere versies wilt doen, heb je een trigger en een reeks nodig:

CREATE TABLE SOMEUSERS (
  SOMEUSERS_ID       NUMBER(10)
                     CONSTRAINT SOMEUSERS__SOMEUSERS_ID__PK PRIMARY KEY,
  SOMEUSERS_NAME     VARCHAR2(50)
                     CONSTRAINT SOMEUSERS__SOMEUSERS_NAME__NN NOT NULL,
  SOMEUSERS_PASSWORD VARCHAR2(50)
);
/

CREATE SEQUENCE gen_id_someUsers START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
/

CREATE OR REPLACE TRIGGER SOMEUSERS__ID__TRG 
BEFORE INSERT ON SOMEUSERS
FOR EACH ROW
BEGIN
  :new.SOMEUSERS_ID := gen_id_someUsers.NEXTVAL;
END;
/

U kunt dan gewoon doen (met de identiteitskolom of de trigger in combinatie met uw reeks):

INSERT INTO SOMEUSERS (
  SOMEUSERS_NAME,
  SOMEUSERS_PASSWORD
) VALUES (
  'Name',
  'Password'
);


  1. Hoe gebruikersrechten in MySQL Workbench te controleren met behulp van de GUI

  2. Unieke beperking voor meerdere tabellen

  3. FOUT:toestemming geweigerd voor relatietabelnaam op Postgres tijdens het proberen van een SELECT als een alleen-lezen gebruiker

  4. Rails ActiveRecord - is er een manier om bewerkingen uit te voeren op tabellen zonder een id?