Oracle
 sql >> база данни >  >> RDS >> Oracle

Актуализирайте колона в таблица, като използвате произволно избрани уникални стойности от друга таблица

Можете да направите това, като създадете тригер за вмъкване в таблица1. След това избирате всички AddressId от таблица2, които още не са зададени в таблица1, подреждате ги на случаен принцип и просто избирате първия. Работещ пример за такъв тригер:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разбор на голям XML файл с PL/SQL

  2. Oracle Изтриване на редове, съвпадение на множество стойности

  3. Как да подадете името на схемата и името на таблицата като вход, след което да получите размер на паметта и row_count като изход в plsql

  4. Предаване на съхранена процедура от SQL Server към ORACLE свързан сървър

  5. Клауза на Oracle SQL Where за намиране на записи за дата, по-стари от 30 дни