Vincolo unicità su un campo con mysql

mercoledì 08 novembre 2006 - 23.25

Abdujaparov Profilo | Newbie

salve a tutti,
ho un problema con my sql:
in una tabella ho due attributi che costituiscono la chiave primaria, un attributo è la chiave primaria di un'altra tabella ,l'altro è della tabella citata , vorrei sapere se c'è la possibilità di assegnare il vincolo di unicità a quest'ultimo attributo.

grazie !!!

Hamelin [FL] Profilo | Junior Member

Non sono sicuro di aver capito bene la tua richiesta

In pratica hai una tabella

CREATE TABLE Tabella (

Attributo1 varchar(5),
Attributo2 varchar(5),

PRIMARY KEY (Attributo1, Attributo2)
)

E vuoi che Attributo2 abbia il vincolo di unicità?

Se è così:

CREATE TABLE Tabella (

Attributo1 varchar(5),
Attributo2 varchar(5) UNIQUE,

PRIMARY KEY (Attributo1, Attributo2)
)

Spero di aver capito bene e di non sbagliare

Abdujaparov Profilo | Newbie

Ciao quello che mi serviva è proprio quello, grazie.
Quando vad a mettere UNIQUE nella proprietà dell'attributo (tramite administrator, accanto a varchar) non mi fa modificare la tabella e mi da un errore.

La query SQL che mi genera è questa:
ALTER TABLE `acquisti`.`utentebak` MODIFY COLUMN `user` VARCHAR(100) UNIQUE CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL;
e poi mi da MYSQL error number 1064.

Ho un altro problema in un altra tabella ho due campi (che non sono la chiave primaria) che ho bisogno che siano unici cioè la coppia devve essere unica, il singolo campo no, come faccio ad impostarli in questo modo?

Grazie ancora, ciao ciao.

lbenaglia Profilo | Guru

>Ho un altro problema in un altra tabella ho due campi (che non
>sono la chiave primaria) che ho bisogno che siano unici cioè
>la coppia devve essere unica, il singolo campo no, come faccio
>ad impostarli in questo modo?

Definisci un constraint UNIQUE su entrambe le colonne.
Non conosco MySQL, in SQL Server farei così:

USE tempdb; GO CREATE TABLE dbo.Students ( StudentID int NOT NULL PRIMARY KEY, FirstName varchar(10) NOT NULL, LastName varchar(10) NOT NULL ); /* Aggiungo il constraint UNIQUE sul nome e cognome */ ALTER TABLE dbo.Students ADD CONSTRAINT UN_FullName UNIQUE(FirstName, LastName); INSERT INTO dbo.Students VALUES(1, 'Lorenzo', 'Benaglia'); INSERT INTO dbo.Students VALUES(2, 'Luca', 'Bianchi'); INSERT INTO dbo.Students VALUES(3, 'Marcello', 'Poletti'); /* Questa INSERT fallirà perché viola il constraint UNIQUE */ INSERT INTO dbo.Students VALUES(4, 'Lorenzo', 'Benaglia'); /* Output: Msg 2627, Level 14, State 1, Line 1 Violation of UNIQUE KEY constraint 'UN_FullName'. Cannot insert duplicate key in object 'dbo.Students'. The statement has been terminated. */ SELECT * FROM dbo.Students; /* Output: StudentID FirstName LastName ----------- ---------- ---------- 1 Lorenzo Benaglia 2 Luca Bianchi 3 Marcello Poletti (3 row(s) affected) */ DROP TABLE dbo.Students;

>Grazie ancora, ciao ciao.
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5