[MySQL] CONTROLLARE I PRIMI CARATTERI DI UN CAMPO VARCHAR

blasco46

Utente Attivo
22 Set 2016
51
0
6
28
Buongiorno avrei bisogno di una soluzione ammesso che esista per controllare l'inizio dei caratteri di un campo varchar del mio database...lavoro con mysql su phpmyadmin.
Praticamente quello che faccio è sparare un seriale da una pistola ottica e quel seriale mi viene scritto all interno del mio campo nella colonna dei seriali...quello che vorrei fare e controllare i primi 8 caratteri del seriale e se sono giusti me li fa inserire altrimenti no.
Ho provato ad impostare un CONSTRAINT nome seriale( CHECK LIKE 'primi8caratteri%') sul campo seriale per fargli capire in che modo deve iniziare il seriale per farlo inserire i tabella ma a quanto pare non funziona! :(
QUALCUNO HA QUALCHE IDEA GENIALE?????? GRAZIE.............
 

blasco46

Utente Attivo
22 Set 2016
51
0
6
28
HO PROVATO ANCHE CON QUESTO TRIGGER:
...
BEGIN
DECLARE @STRINGA VARCHAR(10) // DICHIARO UNA VARIABILE//
@STRINGA=SELECT SUBSTRING(`seriale`,1,10) // ESTRAGGO I PRIMI 10 CARATTERI
IF @STRINGA != '21000216J-' THEN //SE NON SONO UGUALI
PRINT 'CODICE ERRATO' // STAMPA ERRORI
END IF
END


PURTROPPO MI DA ERRORE..NON SO COME FARE...
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
26
@STRINGA=SELECT SUBSTRING(`seriale`,1,10) // ESTRAGGO I PRIMI 10 CARATTERI
Hai provato così?
Codice:
@STRINGA=SELECT SUBSTRING(`seriale`,1,8) // ESTRAGGO I PRIMI 8 CARATTERI
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
26
Come ti interfacci al db? Ossia, come vengono inseriti praticamente i record all'interno della tabella?
 

blasco46

Utente Attivo
22 Set 2016
51
0
6
28
praticamente dall'interfaccia di phpmyadmin seleziono la casella del seriale e con pistola ottica mi inserisce il numero dei seriali dei vari pacchi...
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
26
Potresti procedere in questo modo:
  1. Setti il campo seriale come NOT NULL.
  2. Crei un trigger che, prima dell'inserimento, ti controlli i primi 8 caratteri del seriale. Se questi 8 caratteri non corrispondono a quelli che tu definisci, allora setti il seriale in questione uguale a NULL.

In questo modo, vai a violare il NOT NULL e il record non viene inserito.


Codice:
BEGIN
IF substring(NEW.seriale,1,8) <> '12345678' THEN
SET NEW.seriale = NULL;
END IF;
END
(Nonostante phpmyadmin segnali errore a me funziona lo stesso)
 

Allegati

blasco46

Utente Attivo
22 Set 2016
51
0
6
28
funzionaaaaaaaaaaaa.......settando a null come da te suggerito mi da errore e non mi fa inserire...grazieeeeeeeeeeee
 

AdeKnite

Utente Attivo
3 Ago 2016
161
35
28
26
Prego :)