Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    PostgreSQL: sapere se un record è "usato"

    Buondì,

    Problema problemino che vorrei risolvere nella maniera piu pulita possibile.

    Allora, io ho una tabella SUONI. Poi ho tutta una serie di tabelle che al loro interno hanno uno o piu campi che referenziano al campo ID di Suoni come chiave esterna.

    Il problema è semplice: io devo cancellare il suono, ma solo se questo suono non è referenziato da nessuno in maniera attiva... che devo fare, fare tutta una serie di query in un trigger per controllare che il suono non sia utilizzato, dovendomi per forza ricordarmi ogni volta che aggiungo una tabella che utilizzi un suono di modificare la funzione, oppure esiste in Postgresql un qualcosa che mi dica che il record in questione è referenziato attivamente o meno?

    Grazie a tutti
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  2. #2
    Ok vedi a fare le cose alle 3 del mattino non si capisce nulla...

    allora per ora quello che posso dire è:

    usando information_schema.constraint_column_usage e information_schema.key_column_usage si può fare una bella join e sapere come il campo x della tabella y venga referenziato nel database.. purtroppo mi sa che l'unica sarà fare una query per ogni campo, ma almeno si può rendere la cosa parametrica

    cmq chi avesse altre idee faccia pure uno squillo



    EDIT:

    se qualcuno volesse vedere una query:

    Codice PHP:
    SELECT
    -- source informations
    ccu
    .table_name as source_tableccu.column_name as source_column,ccu.table_schema as source_schema,
    --
    dest informations
    kcu
    .table_name as dest_tablekcu.column_name as dest_columnkcu.table_schema as dest_schema,
    --
    constraint information
     ccu
    .constraint_nameccu.constraint_schematc.constraint_type 
    FROM
    information_schema
    .constraint_column_usage as ccu 
        inner join information_schema
    .key_column_usage as kcu on 
            ccu
    .constraint_name kcu.constraint_name and ccu.constraint_schema kcu.constraint_schema 
                inner join information_schema
    .table_constraints as tc on 
                    tc
    .constraint_schema ccu.constraint_schema and tc.constraint_name ccu.constraint_name
    ORDER BY lower
    (ccu.table_nameasc
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.