[MySQL] CONTROLLARE I PRIMI CARATTERI DI UN CAMPO VARCHAR

blasco46

Utente Attivo
22 Set 2016
51
0
6
33
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.............
 
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...
 
Come ti interfacci al db? Ossia, come vengono inseriti praticamente i record all'interno della tabella?
 
praticamente dall'interfaccia di phpmyadmin seleziono la casella del seriale e con pistola ottica mi inserisce il numero dei seriali dei vari pacchi...
 
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

  • Cattura.PNG
    Cattura.PNG
    20,3 KB · Visite: 386
funzionaaaaaaaaaaaa.......settando a null come da te suggerito mi da errore e non mi fa inserire...grazieeeeeeeeeeee
 

Discussioni simili