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

Opdater en kolonne i en tabel ved hjælp af tilfældigt udvalgte unikke værdier fra en anden tabel

Du kan gøre dette ved at oprette en trigger til indsættelse på tabel1. Derefter vælger du alle AddressId'er fra tabel2, som ikke allerede er sat i tabel1, bestiller dem tilfældigt og vælger bare den første. Et fungerende eksempel på sådan en trigger:

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. Sådan konverteres DB-tabel med overordnet søn-relation til multi-dimensional array

  2. Flere tabeller slutter sig til SQL for dette scenarie

  3. PDO Indsæt i DB

  4. Importerer wikipedia-dump til SQL-base