sql >> Databasteknik >  >> RDS >> Oracle

Uppdatera en kolumn i en tabell med slumpmässigt valda unika värden från en annan tabell

Du kan göra detta genom att skapa en utlösare för infogning på tabell1. Sedan väljer du alla AddressId från tabell2 som inte redan är inställda i tabell1, beställer dem slumpmässigt och väljer bara den första. Ett fungerande exempel på en sådan utlösare:

CREATE TRIGGER TRIGGER1 
BEFORE INSERT ON TABLE1 
FOR EACH ROW /* Trigger for each new row inserted into table1 */
BEGIN
SELECT addressId INTO :new.ADDRESSID /* Set AddressId for new row in table1 */ FROM 
(
   SELECT table2.addressId FROM table2
   LEFT JOIN table1 ON table1.CompanyNumber = table2.company AND table1.AddressID = table2.addressId
   WHERE table1.AddressID IS NULL /* Not already in table1 */ AND table2.Company = :new.COMPANYNUMBER /* Select all addressIds matching the company number */
   ORDER BY dbms_random.value /* order them randomly */
 ) hits
 WHERE ROWNUM = 1; /*Only pick the first randomly ordered one*/
    
EXCEPTION
  WHEN no_data_found THEN /* CompanyNumber not in table2 or no unique AddressId left */
     :new.ADDRESSID := NULL;
END;


  1. Postgresql:tar bort mellanslag mellan vissa typer av siffror

  2. Följ mig på Twitter under Microsoft MVP Summit nästa vecka

  3. Initialt auktoriseringsproblem i mysql

  4. Parsar MySQL till JavaScript-arrayer genom PHP och jQuery