>Allora, devo premettere che queste tabelle le ho create tramite
>SQL Server Management Studio Express 2005 come parti di un database
>- in pratica, ho potuto definire le tabelle e inserire gli elementi
>senza dover scrivere il codice in SQL.
OK, ma da SQL Server Management Studio Express puoi esportarne la struttura sottoforma di comandi SQL semplicemente selezionando la tabella, tasto DX, Script Table as... > CREATE To > Clipboard ed incollando il contenuto in un nuovo post di questo thread.
>Entrambe le tabelle hanno
>la stessa struttura e sono composte dagli stessi campi:
>
>Prezziario_1 / Prezziario_2
>
>- Codice (int, chiave primaria)
>- Descrizione_Breve (varchar(MAX))
>- Descrizione (varchar(MAX))
>- Prezzo (money)
Descrizione_Breve definita come varchar(MAX) è un po' un controsenso, non trovi? 
I BOL riportano: "Use varchar(max) when the sizes of the column data entries vary considerably, and the size might exceed 8,000 bytes." e non credo che una descrizione BREVE possa superare gli 8000 caratteri.
Analogo discorso per la colonna Descrizione.
Tieni presente che è sempre meglio definire la dimensione delle colonne in modo da non sciupare spazio prezioso nel nostro db e per introdurre implicitamente una prima forma di constraint sui dati.
>Il mio dilemma e' questo - vorrei fare in modo che, ogni volta
>che inserisco (manualmente) un nuovo elemento nella tabella Prezziario_1,
>i campi Codice, Descrizione_Breve e Descrizione di questo nuovo
>elemento siano automaticamente inseriti nella tabella Prezziario_2.
>Io ho pensato che un trigger apposito mi avrebbe permesso di
>ottenere questo risultato, ma non sono sicuro se un trigger scritto
>per una certa tabella possa influenzare anche altre tabelle (sì,
>lo so, sono ancora un principiante con SQL...
)
Osserva il seguente esempio:
USE tempdb;
CREATE TABLE dbo.Prezziario_1(
Codice int NOT NULL PRIMARY KEY,
Descrizione_Breve varchar(5) NOT NULL,
Descrizione varchar(15) NOT NULL,
Prezzo money NOT NULL
);
CREATE TABLE dbo.Prezziario_2(
Codice int NOT NULL PRIMARY KEY,
Descrizione_Breve varchar(5) NOT NULL,
Descrizione varchar(15) NOT NULL,
Prezzo money NULL
);
GO
CREATE TRIGGER dbo.trI_Prezziario_1
ON dbo.Prezziario_1
FOR INSERT
AS
INSERT dbo.Prezziario_2(Codice, Descrizione_Breve, Descrizione)
SELECT Codice, Descrizione_Breve, Descrizione
FROM INSERTED;
GO
INSERT dbo.Prezziario_1 VALUES(1, 'DESC1', 'Descrizione 1', 10);
SELECT *
FROM dbo.Prezziario_1;
/* Output:
Codice Descrizione_Breve Descrizione Prezzo
----------- ----------------- --------------- ---------------------
1 DESC1 Descrizione 1 10,00
(1 row(s) affected)
*/
SELECT *
FROM dbo.Prezziario_2;
/* Output:
Codice Descrizione_Breve Descrizione Prezzo
----------- ----------------- --------------- ---------------------
1 DESC1 Descrizione 1 NULL
(1 row(s) affected)
*/
DROP TABLE dbo.Prezziario_1, dbo.Prezziario_2;
Il trigger DML di INSERT che ho definito sulla tabella Prezziario_1 non fa altro che popolare la tabella Prezziario_2 con le colonne Codice, Descrizione_Breve e Descrizione.
La tabella virtuale INSERTED contiene tutte le righe inserite nella transazione corrente.
Ora, se intendi mantenere una sincronizzazione completa tra le due tabelle dovrai definire altri 2 triggers, uno di DELETE ed uno di UPDATE.
Prova da solo per esercizio, consultando queste pagine dei Books Online:
http://msdn.microsoft.com/it-it/library/ms178110.aspx
http://msdn.microsoft.com/it-it/library/ms189799.aspx
>Domani posso postare il codice che ho scritto, in modo che chi
>volesse mi possa indicare quali sono gli errori che commetto.
>
>Grazie mille!
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org