>Ho creato 2 tabelle (utilizzando il designer del management studio)
>in questo modo:
>
>Tabella1
>ID
>nome PK
>
>Tabella2
>ID
>nomi FK
Ciao Marco,
Non capisco bene la struttura delle tabelle.
A cosa serve la colonna ID di Tabella 1 se il constraint di Primary Key è definito sulla colonna nome?
Nella Tabella 2 dov'è la Primary Key?
>Ho collegato le tabelle da una foreing key settata per fare sia
>l'insert che l'update in cascata.
L'"insert a cascata" non esiste. L'opzione cascade su un constraint Foreign Key può essere solo di UPDATE o DELETE.
>Mi succede questo:
>se inserisco dati dal management studio nella prima tabella nella
>seconda non viene aggiunto nulla.
>Stessa cosa mi capita per l'eliminazione: se manualmente inserisco
>sia nella prima che nella seconda campi congrui, ovvero
>
>Tabella1
>1 Giulio
>2 Mirco
>
>Tabella2
>1 Mirco
>2 Mirco
>3 Giulio
>
>e cancello Giulio nella prima tabella, la seconda resta con i
>dati..... non dovrebbe farlo in automatico??? oppure devo inserire
>i dati per forza da istruzioni sql?
Osserva il seguente esempio:
USE tempdb;
CREATE TABLE dbo.T1(
Nome varchar(10) NOT NULL,
CONSTRAINT PK_T1 PRIMARY KEY(Nome)
);
CREATE TABLE dbo.T2(
ID int NOT NULL,
Nome varchar(10) NOT NULL,
CONSTRAINT PK_T2 PRIMARY KEY(ID),
CONSTRAINT FK_T2_T1 FOREIGN KEY(Nome)
REFERENCES dbo.T1(Nome) ON DELETE CASCADE
);
INSERT dbo.T1 VALUES
('Giulio')
, ('Mirco');
INSERT dbo.T2 VALUES
(1, 'Mirco')
, (2, 'Mirco')
, (3, 'Giulio');
DELETE dbo.T1
WHERE Nome = 'Giulio';
SELECT *
FROM dbo.T2;
/* Output:
ID Nome
----------- ----------
1 Mirco
2 Mirco
(2 row(s) affected)
*/
DROP TABLE dbo.T2, dbo.T1;
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org