sql >> Database teknologi >  >> RDS >> Oracle

SCOPE for en tabel med REF'er

Du vil tilføje omfanget til COLUMN_VALUE pseudo-kolonne i den indlejrede tabel:

ALTER TABLE cyclers_tab ADD SCOPE FOR ( COLUMN_VALUE ) IS cycler;

Hvis du så gør:

INSERT INTO cycler ( name ) VALUES ( 'c1.1' );
INSERT INTO cycler ( name ) VALUES ( 'c1.2' );

INSERT INTO team (
  name,
  cyclers
) VALUES (
  'team1',
  t_cycler_list(
    ( SELECT REF(c) FROM cycler c WHERE name = 'c1.1' ),
    ( SELECT REF(c) FROM cycler c WHERE name = 'c1.2' )
  )
);

Så kan du indsætte rækken. Men hvis du har en anden tabel af samme objekttype:

CREATE TABLE cycler2 OF t_cycler (
    name PRIMARY KEY
);

INSERT INTO cycler2 ( name ) VALUES ( 'c2.1' );

Og prøv at gøre:

INSERT INTO team (
  name,
  cyclers
) VALUES (
  'team2',
  t_cycler_list(
    ( SELECT REF(c) FROM cycler2 c WHERE name = 'c2.1' )
  )
);

Så får du fejlen:

db<>fiddle her




  1. SQL - Forespørg samme kolonne to gange med forskellige datoer i where-sætning

  2. Sådan gemmer du en Doctrine-entitet i to databasetabeller (påkrævet for MySQL-optimering)

  3. Opdatering af en mysql-datatabel fra forespørgselsparametre ved hjælp af nodejs og express

  4. Kan ikke hente flere tabelenheder gennem Lagret procedure ved brug af dvale