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

    [SQL]L'uso del check per il controllo dei dati inseriti

    Ciao a tutti,
    volevo eseguire un controllo sui dati che vengono inseriti nella tabella contratti. Ad esempio volevo controllare che non venisse creato un contratto che iniziasse con una data precedente alla nascita di un gruppo musicale:

    Codice PHP:
    CREATE TABLE  `contratti` (
      `
    gidint(11NOT NULL,
      `
    eidint(11NOT NULL,
      `
    daldate NOT NULL,
      `
    aldate NOT NULL,
      
    PRIMARY KEY  (`gid`,`eid`),
      
    FOREIGN KEY (`eid`) REFERENCES `etichette` (`eid`) ON DELETE CASCADE ON UPDATE NO ACTION,
      
    FOREIGN KEY (`gid`) REFERENCES `gruppi` (`gid`) ON DELETE CASCADE ON UPDATE NO ACTION,
      
    CHECK( `dal` > (SELECT g.`nascitaFROM `gruppig WHERE g.`gid` = `gid`))

    ENGINE=InnoDB 

    Per chiarezza metto anche la tabella Gruppi

    Codice PHP:
    CREATE TABLE  `gruppi` (
      `
    gidint(11NOT NULL AUTO_INCREMENT,
      `
    nomevarchar(30NOT NULL,
      `
    nascitadate default NULL,
      
    PRIMARY KEY  (`gid`)
    ENGINE=InnoDB 
    La sintassi è corretta, ossia quella del mio libro di testo, ma non capisco perchè non funzioni e mi faccia inserire ugualmente contratti con date antecedenti alla data `nascita`.
    Forse c'è un errore nel confronto tra date con un semplice > o <?
    Ho cercato nel forum ed ho trovato solo confronti tra date in codice php mentre il confronto lo vorrei fare sottoforma di check a monte.

    Grazie a tutti in anticipo.
    La misura di un successo o di un fallimento è dentro se stessi.

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Sei sicuro di averlo letto bene il libro di testo?

    The CHECK clause is parsed but ignored by all storage engines.
    http://dev.mysql.com/doc/refman/5.0/...ate-table.html

  3. #3
    Originariamente inviato da luca200
    Sei sicuro di averlo letto bene il libro di testo?

    http://dev.mysql.com/doc/refman/5.0/...ate-table.html
    Credo che il MySQL l'ignori mentre SQLServer la valuti
    Che db stai usando?

  4. #4
    Ah ecco, il libro di Basi di Dati non fa menzione di queste cose...

    Eravamo indecisi se usare MySql o Postgre SQL...e abbiamo optato per il primo...

    Vabe grazie comunque, volevamo fare un controllo a monte senza scomodare il php usando il check ma se non è possibile pazienza...
    La misura di un successo o di un fallimento è dentro se stessi.

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.