Mögliche (funktionierende!) Lösung mit View
bearbeitet von ursus contionabundoVielleicht so:
[http://www.mysqltutorial.org/mysql-check-constraint/](http://www.mysqltutorial.org/mysql-check-constraint/)
Mögliche Lösung mit View:
~~~sql
CREATE TABLE Dokument ( D_Name VARCHAR(100) NOT NULL
Query OK, 0 rows affected (0,01 sec)
CREATE VIEW DokInsert AS SELECT D_Name from Dokument WHERE D_NAME > "" WITH CHECK OPTION;
Query OK, 0 rows affected (0,02 sec)
insert into Dokument set D_NAME=""; ### SO NICHT: UMGEHT CHECK ###
Query OK, 1 row affected (0,01 sec
insert into DokInsert set D_NAME="";
ERROR 1369 (HY000): CHECK OPTION failed 'test.DokInsert'
insert into DokInsert (D_NAME) values ("");
ERROR 1369 (HY000): CHECK OPTION failed 'test.DokInsert'
insert into DokInsert set D_NAME="foo";
Query OK, 1 row affected (0,01 sec)
update DokInsert set D_NAME="" where D_NAME="foo";
ERROR 1369 (HY000): CHECK OPTION failed 'test.DokInsert'
select version();
+-----------+
| version() |
+-----------+
| 5.7.20 |
+-----------+
1 row in set (0,00 sec)
~~~
Mögliche (funktionierende!) Lösung mit View
bearbeitet von ursus contionabundoVielleicht so:
[http://www.mysqltutorial.org/mysql-check-constraint/](http://www.mysqltutorial.org/mysql-check-constraint/)
Mögliche Lösung mit View:
~~~sql
CREATE TABLE Dokument ( D_Name VARCHAR(100) NOT NULL
Query OK, 0 rows affected (0,01 sec)
CREATE VIEW DokInsert AS SELECT D_Name from Dokument WHERE D_NAME > "" WITH CHECK OPTION;
Query OK, 0 rows affected (0,02 sec)
insert into Dokument set D_NAME=""; ### SO NICHT: UMGEHT CHECK ###
Query OK, 1 row affected (0,01 sec
insert into DokInsert set D_NAME="";
ERROR 1369 (HY000): CHECK OPTION failed 'test.DokInsert'
insert into DokInsert (D_NAME) values ("");
ERROR 1369 (HY000): CHECK OPTION failed 'test.DokInsert'
insert into DokInsert set D_NAME="foo";
Query OK, 1 row affected (0,01 sec)
update DokInsert set D_NAME="" where D_NAME="foo";
ERROR 1369 (HY000): CHECK OPTION failed 'test.DokInsert'
~~~
Mögliche Lösung mit View
bearbeitet von ursus contionabundoVielleicht so:
[http://www.mysqltutorial.org/mysql-check-constraint/](http://www.mysqltutorial.org/mysql-check-constraint/)
Mögliche Lösung mit View:
~~~sql
CREATE TABLE Dokument ( D_Name VARCHAR(100) NOT NULL
Query OK, 0 rows affected (0,01 sec)
CREATE VIEW DokInsert AS SELECT D_Name from Dokument WHERE D_NAME > "" WITH CHECK OPTION;
Query OK, 0 rows affected (0,02 sec)
insert into Dokument set D_NAME=""; ### SO NICHT: UMGEHT CHECK ###
Query OK, 1 row affected (0,01 sec
insert into DokInsert set D_NAME="";
ERROR 1369 (HY000): CHECK OPTION failed 'test.DokInsert'
insert into DokInsert (D_NAME) values ("");
ERROR 1369 (HY000): CHECK OPTION failed 'test.DokInsert'
insert into DokInsert set D_NAME="foo";
Query OK, 1 row affected (0,01 sec)
update DokInsert set D_NAME="" where D_NAME="foo";
ERROR 1369 (HY000): CHECK OPTION failed 'test.DokInsert'
~~~
Mögliche Lösung mit View
bearbeitet von ursus contionabundoVielleicht so:
[http://www.mysqltutorial.org/mysql-check-constraint/](http://www.mysqltutorial.org/mysql-check-constraint/)
Mögliche Lösung mit View:
~~~sql
CREATE TABLE Dokument ( D_Name VARCHAR(100) NOT NULL
Query OK, 0 rows affected (0,01 sec)
CREATE VIEW DokInsert AS SELECT D_Name from Dokument WHERE D_NAME > "" WITH CHECK OPTION;
Query OK, 0 rows affected (0,02 sec)
insert into Dokument set D_NAME=""; ### SO NICHT: UMGEHT CHECK ###
Query OK, 1 row affected (0,01 sec
insert into DokInsert set D_NAME="";
ERROR 1369 (HY000): CHECK OPTION failed 'test.DokInsert'
insert into DokInsert set D_NAME="foo";
Query OK, 1 row affected (0,01 sec)
~~~
Mögliche Lösung mit View
bearbeitet von ursus contionabundoVielleicht so:
[http://www.mysqltutorial.org/mysql-check-constraint/](http://www.mysqltutorial.org/mysql-check-constraint/)
Mögliche Lösung mit View:
~~~sql
CREATE TABLE Dokument ( D_Name VARCHAR(100) NOT NULL
Query OK, 0 rows affected (0,01 sec)
CREATE VIEW DokInsert AS SELECT D_Name from Dokument WHERE D_NAME > "" WITH CHECK OPTION;
Query OK, 0 rows affected (0,02 sec)
insert into Dokument set D_NAME="";
Query OK, 1 row affected (0,01 sec
insert into DokInsert set D_NAME="";
ERROR 1369 (HY000): CHECK OPTION failed 'test.DokInsert'
insert into DokInsert set D_NAME="foo";
Query OK, 1 row affected (0,01 sec)
~~~
MYSQL: NULL != ''
bearbeitet von ursus contionabundoVielleicht so:
[http://www.mysqltutorial.org/mysql-check-constraint/](http://www.mysqltutorial.org/mysql-check-constraint/)
Lösung mit View:
~~~sql
CREATE TABLE Dokument ( D_Name VARCHAR(100) NOT NULL
Query OK, 0 rows affected (0,01 sec)
CREATE VIEW DokInsert AS SELECT D_Name from Dokument WHERE D_NAME > "" WITH CHECK OPTION;
Query OK, 0 rows affected (0,02 sec)
insert into Dokument set D_NAME="";
Query OK, 1 row affected (0,01 sec
insert into DokInsert set D_NAME="";
ERROR 1369 (HY000): CHECK OPTION failed 'test.DokInsert'
insert into DokInsert set D_NAME="foo";
Query OK, 1 row affected (0,01 sec)
~~~
MYSQL: NULL != ''
bearbeitet von ursus contionabundoVielleicht so:
[http://www.mysqltutorial.org/mysql-check-constraint/](http://www.mysqltutorial.org/mysql-check-constraint/)
Lösung mit View:
~~~
ALTER VIEW DokInsert AS SELECT D_Name from Dokument WHERE D_NAME > "" WITH CHECK OPTION;
Query OK, 0 rows affected (0,02 sec)
mysql> insert into Dokument set D_NAME="";
Query OK, 1 row affected (0,01 sec
mysql> insert into DokInsert set D_NAME="";
ERROR 1369 (HY000): CHECK OPTION failed 'test.DokInsert'
mysql> insert into DokInsert set D_NAME="foo";
Query OK, 1 row affected (0,01 sec)
~~~