
Originariamente inviata da
Jamie04
......ma come aggiungo i caratteri iniziali e finali? sempre con un trigger on insert? .....
Aggiungere a lato programma significa che non li aggiungi con il DB
se hai un DB hai certamente anche un programma ( ASP, PHP, Access ) eccetera che legge e scrive i dati del DB
quindi nel DB resterebbero solo 11 caratteri tutto il resto è superato

Originariamente inviata da
Jamie04
ma che avete contro i trigger?

I trigger sono antipatici
e costringono il DB a un notevole lavoro di intelligenza
mentre il DB è (a parer mio) solamente un magazzino di dati, robustissimo ma ignorante
mi dilungo solo un po',
La mia vecchia concezione è che:
Nel programma ( o applicazione ) scrivi, calcoli,
verifichi prima di inserire la congruità dei dati che stai INSERTANDO
verifichi prima di cancellare un record che non ci siano record relazionati su tabelle figlie
eccetera eccetera
Nel DB conservi solamente i dati
Il Trigger invece inverte questa logica e delega al DB la esecuzione di operazione intelligenti sui dati
ma certamente non può sostituire il programma, quindi resta una scarpa e una ciabatta ......

Originariamente inviata da
Jamie04
il compito chiede di scrivere il codice che definisce la tabella, non posso fare come mi pare, ........
Se il compito prevede una tabella allora il Trigger è da eliminare in quanto esterno alla tabella
direi che quello che si avvicina di più potrebbe essere:
(Su base SQLServer perché non uso MySql)
codice:
-- Usa il DB che preferisci xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
USE [Test]
GO
-- cominciamo a creare la tabella con un [Id] autoincrementale
CREATE TABLE [dbo].[T3]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[Abbo] [nvarchar](20) NULL,
[Teat] [nvarchar](50) NULL,
[Uten] [int] NULL
) ON [PRIMARY]
GO
-- Imposto la Kry primaria sul campo di nome [Id]
ALTER TABLE dbo.T3 ADD CONSTRAINT
PK_T3 PRIMARY KEY CLUSTERED
(
Id
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
-- Aggiungo un vincolo che verifica i:
-- 1°) Primi 2 caratteri si Abbo
-- 2°) Ultimi 2 caratteri di Abbo
-- 3°) Lunghezza di Abbo
-- In verita se avessi definito sopra Abbo come 'nvarchar(15)' non avrei avuto bisogno
-- di verificarne la lunghezza ( Ma facciamo le cose difficili e complete :) )
ALTER TABLE dbo.T3 ADD CONSTRAINT
ck_Abb CHECK ((left([Abbo],(2))='N_' AND right([Abbo],(2))='00' AND len([Abbo])=(15)))
GO
-- Aggiungo un indice Univoco composito con i campi [Teat] e [Uten]
-- in modo che ogni utente non possa avere piu di 1 abbonamento allo stesso teatro
CREATE UNIQUE NONCLUSTERED INDEX KC_Te_Ut ON dbo.T3
(
Teat,
Uten
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
-- Finito
.