[PostgreSQL] Validatie van gegevens

Pagina: 1
Acties:

  • TricTrac
  • Registratie: November 2000
  • Laatst online: 22-06 15:07
Ik heb een database waarin een emailadres in een tabel ingevoerd moet worden.
Email bevind zich in de tabel klant.
Nu moet dat emailadres er als volgt uitzien *@*.* anders mag hij hem niet accepteren.
Heb al verschillende mogelijkheden geprobeert (rules, triggers etc.) maar op 1 of ander manier lukt dat niet.

Hoe kan ik dit het beste oplossen?

controlle op geslacht (alleen mogelijk om M of V in te vullen) werkt
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
fanshop=> create table try
fanshop-> (
fanshop(> geslacht char(1) not null
fanshop(> check(geslacht in ('M', 'V')
fanshop(> )
fanshop(> );
CREATE
fanshop=> insert into try(geslacht) values('D')
fanshop-> ;
ERROR:  ExecAppend: rejected due to CHECK constraint try_geslacht
fanshop=> insert into try(geslacht) values('M')
fanshop-> ;
INSERT 567724 1


Maar ik zit nu dus met de manier van notatie dussen de haakjes om *@*.* goed te krijgen...:
voorbeeld 1 (mislukt)
code:
1
2
3
4
5
6
fanshop=> create table email
fanshop-> (
fanshop(> email varchar(30) not null
fanshop(> check(email in(*@*'.'*))
fanshop(> );
ERROR:  parser: parse error at or near ")"


voorbeeld 2 (mislukt)
code:
1
2
3
4
5
6
7
8
9
10
11
12
fanshop=> create table email
fanshop-> (
fanshop(> email varchar(30) not null
fanshop(> check(email in('*@*.*'))
fanshop(> );
CREATE
fanshop=> insert into email(email) values('jacky')
fanshop-> ;
ERROR:  ExecAppend: rejected due to CHECK constraint email_email
fanshop=> insert into email(email) values('jack@tweakers.net')
fanshop-> ;
ERROR:  ExecAppend: rejected due to CHECK constraint email_email

bvd.!

  • TricTrac
  • Registratie: November 2000
  • Laatst online: 22-06 15:07
Heb de * ook al vervangen door % trouwens

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:54
Hmm... IK weet niet of je dit probleem mbhv een domain kunt oplossen. Domains geven aan welke waarden een veld mag bevatten. Ik geloof niet dat je wildcards kunt gebruiken daarvoor.
Wat je kunt doen is, voordat je de gegevens naar de databank wegschrijft, zelf de nodige controles gaan uitvoeren (dmv regexp oid).

https://fgheysels.github.io/


  • jochemd
  • Registratie: November 2000
  • Laatst online: 28-08 15:41
Wat je moet doen is een functie schrijven die een emailadres valideert, als argument een string emailadres accepteerd en een boolean teruggeeft. Dan kan je vervolgens die functie in je check constraint zetten.
Welke taal het handigst is om die functie te schrijven is weet ik niet, maar ik kan me voorstellen dat als je bijvoorbeeld PL/Perl hebt geinstalleerd dat er dan wel wat email validatie regular expressions te vinden zijn.

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
CHECK(email LIKE '%etc%') ?

  • TricTrac
  • Registratie: November 2000
  • Laatst online: 22-06 15:07
iig bedankt voor de reply's... Het is dus niet mogelijk om dit met puur SQL statemens op te lossen begrijp ik? :(

  • TricTrac
  • Registratie: November 2000
  • Laatst online: 22-06 15:07
_/-\o_ Ahh.. Marcusk... Thanks.. die werkt wel! _/-\o_


Danku!!
Pagina: 1