Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente bannato
    Registrato dal
    Jul 2007
    Messaggi
    368

    MYSQL: Limitatore alle colonne.

    Vorrei crere delle colonne che:

    * non si possono editare in nessun modo e da nessun utente
    * si editano da sole (seguendo qualcosa di prestabilito tipo una select) senza neanche menzionarle nella query
    * possano contenere solo valori nunerici compresi in un certo range

    Cioè, ci sono sei colonne in una tabella, l' utente lancia un query che contiene dati solo per le prime tre. Ci si trova alla fine con tutte e sei le colonne riempite automaticamente e per riemire lealtre tre il sistema esegue una funzione. Qualcosa di simile a questo:
    codice:
    create table prova(
    id int primari key,
    ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
    .

    solo che al posto di "CURRENT_TIMESTAMP" ci deve essere una query (omagari una stored procedure).

  2. #2

    Re: MYSQL: Limitatore alle colonne.

    Originariamente inviato da marcoocram
    * non si possono editare in nessun modo e da nessun utente
    * si editano da sole (seguendo qualcosa di prestabilito tipo una select) senza neanche menzionarle nella query
    * possano contenere solo valori nunerici compresi in un certo range
    Per i "campi calcolati", puoi usare i trigger.
    Per il resto, lavora a livello di applicazione, non di database.

  3. #3
    Utente bannato
    Registrato dal
    Jul 2007
    Messaggi
    368
    I trigger agiscono prima o dopo la query,
    http://database.html.it/guide/lezione/2456/i-triggers/

    Io voglio usare un engine tipo archive quindi non sarà più possibile modificare la riga interessata, se ne creerà un' altra.

  4. #4
    Allora devi lavorare a livello di applicazione.

    In futuro, posta tutti i requisiti del problema nel primo post, invece di aggiungerli man mano.

  5. #5
    Utente bannato
    Registrato dal
    Jul 2007
    Messaggi
    368
    E se lavorassi a livello di stored procedure o funzioni? Una di queste due cose può riempire un campo con il risultato di un query?

  6. #6

  7. #7
    Utente bannato
    Registrato dal
    Jul 2007
    Messaggi
    368
    Non posso perchè mi ritroverei con due righe per una sola insert. Questa cosa che dico io ho scopert che si può fare con SQL Server: e possibile, infatti, in fase di creazione della struttura di una tabella, creare colonne calcolate:
    codice:
    CREATE TABLE [dbo].[Table_1]( [campo_a] [bigint] NOTNULL, [campo_b] AS([DBO].[PROVA]()) )ON [PRIMARY]
    dove ([DBO].[PROVA]()) è una function che, magari, restituisce un valore interagendo con altre tabelle.
    Ad esempio:
    codice:
    CREATE FUNCTION [dbo].[PROVA]() RETURNS BIGINT AS BEGIN RETURN (SELECT MAX(NUMERO) FROM TABLE_2) END
    .

  8. #8
    Originariamente inviato da marcoocram
    Non posso perchè mi ritroverei con due righe per una sola insert.
    Potresti indicarmi il riferimento nella documentazione ufficiale dove viene detto ciò?

  9. #9
    Utente bannato
    Registrato dal
    Jul 2007
    Messaggi
    368
    L' ho letto sulla guida:
    http://database.html.it/guide/lezion...pi-di-tabelle/

    Non si possono fare update solo select e insert. Tralaltro non posso ancora fare prove pratiche perchè non mi viene fuori la tabella archive con questa riga:
    CREATE TABLE tabella (a INT) ENGINE = ARCHIVE;
    .

  10. #10
    Originariamente inviato da marcoocram
    L' ho letto sulla guida:
    http://database.html.it/guide/lezion...pi-di-tabelle/

    Non si possono fare update solo select e insert.
    Appunto, tu devi fare un INSERT e un TRIGGER "BEFORE INSERT" "compila" il resto dei campi.

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.