[Risolto] [Mysql] Unique condizionato.

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

[Risolto] [Mysql] Unique condizionato.

Messaggio da SuperStep »

Salve,

Supponendo di avere una tabella formata da questi campi:

Codice: Seleziona tutto

id INTEGER AUTOINCREMENT
relazione1_id INTEGER FOREIGN KEY
position_in_relazione1 INTEGER UNIQUE in 'relazione1_id'
se volessi che il campo position_in_relazione1 sia unique ma solo per la medesima relazione

(esempio)

Codice: Seleziona tutto

id | relazione1_id | position_in_relazione1
---+---------------+-----------------------
1  | 1             | 7
2  | 1             | 8
3  | 1             | 9
---+---------------+----------------------- (split per leggibilita')
4  | 2             | 6
5  | 2             | 7
6  | 2             | 8
7  | 2             | 9
---+---------------+----------------------- (split per leggibilita')
8  | 3             | 8
9  | 3             | 9
come si puo' vedere, le tuple con id (1,2,3); (4,5,6,7); (8,9); hanno relazione a divere altre tuple (rispettivamente ad 1, 2 e 3).

Vorrei che il terzo campo sia unique solo nella relazione, ovvero:
vorrei che per ogni 'relazione1_id', ci sia un campo 'position_in_relazione1', che sia univoco.

(una cosa di questa non dovrebbe accadere)

Codice: Seleziona tutto

id | relazione1_id | position_in_relazione1
---+---------------+-----------------------
1  | 1             | 7
2  | 1             | 7
esiste una sinstassi per specificarlo con mysql?
Ultima modifica di SuperStep il venerdì 1 maggio 2015, 1:29, modificato 1 volta in totale.
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Mysql] Unique condizionato.

Messaggio da Zoff »

È una normale UNIQUE:

Codice: Seleziona tutto

ALTER TABLE nome_tabella ADD CONSTRAINT nome_vincolo_unique_relazione1 UNIQUE ( relazione1_id, position_in_relazione1)
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

Re: [Mysql] Unique condizionato.

Messaggio da SuperStep »

non ci sono problemi legati al fatto che sia una foreign key?
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Mysql] Unique condizionato.

Messaggio da Zoff »

Che problemi dovrebbero esserci?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

Re: [Mysql] Unique condizionato.

Messaggio da SuperStep »

non so, due constraint che sono "attaccate" l'una all'altra credevo potessero creare problemi. Se non ce ne sono provo e metto risolto. Grazie Zoff!
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [Mysql] Unique condizionato.

Messaggio da Zoff »

Finché non sono in conflitto si possono mettere tutti i vincoli che si vogliono.
In questo caso semplicemente si ricude il numero di chiavi possibili, perché oltre all'unicità della PK c'è anche il nuovo vincolo per relazione1.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
SuperStep
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2037
Iscrizione: lunedì 19 dicembre 2011, 16:26
Desktop: Unity
Distribuzione: Ubuntu 16.04 LTS x86_64
Sesso: Maschile
Località: Somma Vesuviana (NA)

Re: [Mysql] Unique condizionato.

Messaggio da SuperStep »

ok, sembra effettivamente funzionare. Perfetto, chiudo.
ubuntu 16.04 LTS 64-bit - Memoria: 31,3 Gib - Processore: Intel Core i7-5960X CPU @ 3.00 GHz × 16 - Grafica: AMD Radeon HD 7800 Series - Disco: SSD 256 GB x 4 (RAID 01)
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti