Falscheingaben verbieten
am 30.08.2007 11:29:27 von Frank Kulow
Hallo NG,
für eine Tabelle:
CREATE TABLE IF NOT EXISTS t (ts TIMESTAMP,name VARCHAR(20));
soll es so sein:
INSERT INTO t VALUES(NULL,USER());
wie kann ich verhindern, dass so etwas:
INSERT INTO t VALUES('2000-01-01 11:11:11','bin ich nicht');
angenommen wird?
denn leider ist ja
CREATE TABLE IF NOT EXISTS t (ts NOW(),name USER());
nicht erlaubt.
Danke Frank
Re: Falscheingaben verbieten
am 30.08.2007 11:42:18 von Christian Kirsch
Am 30.08.2007 11:29 schrieb Frank Kulow:
> Hallo NG,
>
> für eine Tabelle:
>
> CREATE TABLE IF NOT EXISTS t (ts TIMESTAMP,name VARCHAR(20));
>
> soll es so sein:
>
> INSERT INTO t VALUES(NULL,USER());
>
>
> wie kann ich verhindern, dass so etwas:
>
> INSERT INTO t VALUES('2000-01-01 11:11:11','bin ich nicht');
>
> angenommen wird?
>
Indem Du definierst, was erlaubte und was nicht erlaubte Eingaben sind.
>
> denn leider ist ja
>
> CREATE TABLE IF NOT EXISTS t (ts NOW(),name USER());
>
> nicht erlaubt.
Äh, der Default von TIMESTAMP ist doch ohnehin NOW(). Außerdem kennt
MySQL Trigger. Näheres dazu in der Dokumentation unter dev.mysql.com/doc
--
Christian
Re: Falscheingaben verbieten
am 30.08.2007 12:33:04 von Frank Kulow
Christian Kirsch schrieb:
> Äh, der Default von TIMESTAMP ist doch ohnehin NOW().
Default ja, aber man kann auch irgendwas anderes reinschreiben.
Außerdem kennt
> MySQL Trigger. Näheres dazu in der Dokumentation unter dev.mysql.com/doc
>
Danke, an den dachte ich noch nicht.
Frank
Re: Falscheingaben verbieten
am 30.08.2007 13:06:53 von Andreas Kretschmer
Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de
Re: Falscheingaben verbieten
am 30.08.2007 13:07:38 von Sven Paulus
Frank Kulow wrote:
>> Außerdem kennt
>> MySQL Trigger. Näheres dazu in der Dokumentation unter dev.mysql.com/=
doc
> Danke, an den dachte ich noch nicht.
Allerdings gibt es bei MySQL-Triggern keine offizielle Moeglichkeit zu sag=
en
"Fehler, diese Zeile doch nicht einfuegen". Du musst sowas wie eine Divisi=
on
by Zero, Duplicate Rows o.ae. hervorrufen, damit Du im Fehlerfall aus dem
Trigger aussteigen kannst.
Re: Falscheingaben verbieten
am 31.08.2007 14:11:13 von Hartmut Holzgraefe
Frank Kulow wrote:
> für eine Tabelle:
>=20
> CREATE TABLE IF NOT EXISTS t (ts TIMESTAMP,name VARCHAR(20));
>=20
> soll es so sein:
>=20
> INSERT INTO t VALUES(NULL,USER());
>=20
>=20
> wie kann ich verhindern, dass so etwas:
>=20
> INSERT INTO t VALUES('2000-01-01 11:11:11','bin ich nicht');
>=20
> angenommen wird?
das Timestamp-Feld über ein VIEW verbergen?
mysql> CREATE VIEW t2 AS SELECT name FROM t;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t2 values ("foo");
Query OK, 1 row affected (0.00 sec)
mysql> select * from t;
+---------------------+------+
| ts | name |
+---------------------+------+
| 2007-08-31 14:10:31 | foo |
+---------------------+------+
1 row in set (0.00 sec)
Re: Falscheingaben verbieten
am 31.08.2007 14:15:09 von Hartmut Holzgraefe
Hartmut Holzgraefe wrote:
> das Timestamp-Feld über ein VIEW verbergen?
hm ... das löst nur den Timestamp-Teil aber
nicht den User-Part ...