>> The manual is your friend!
I was trying to inform you but you were faster  :o)
An IF then insert in your application can do the trick.

Mathias

Selon Michael Stassen <[EMAIL PROTECTED]>:

> The manual is your friend!  CHECK constraints are not supported in
> mysql.  "The CHECK clause is parsed but ignored by all storage engines."
> <http://dev.mysql.com/doc/mysql/en/create-table.html>.
>
> Using your example, you can easily verify this with SHOW CREATE TABLE:
>
> mysql> SHOW CREATE TABLE employee;
>
+----------+-------------------------------------------------------------------------------------------------------------------------------------------+
> | Table    | Create Table
>
>          |
>
+----------+-------------------------------------------------------------------------------------------------------------------------------------------+
> | employee | CREATE TABLE `employee` (
>    `name` varchar(30) default NULL,
>    `salary` decimal(10,2) default NULL
> ) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
>
+----------+-------------------------------------------------------------------------------------------------------------------------------------------+
> 1 row in set (0.05 sec)
>
> As you can see, there is no check constraint.
>
> Michael
>
> [EMAIL PROTECTED] wrote:
>
> > Hi,
> > The syntaxe is here, but the constraints seems not to be checked. Is this a
> bug
> > ? i don't know !
> >
> > mysql> create table employee (
> >     ->      name varchar(30),
> >     ->      salary numeric(10,2),
> >     ->      constraint  check (salary > 0)
> >     ->   );
> > Query OK, 0 rows affected (0.22 sec)
> >
> > mysql>
> > mysql>
> > mysql> desc employee
> >     -> ;
> > +--------+---------------+------+-----+---------+-------+
> > | Field  | Type          | Null | Key | Default | Extra |
> > +--------+---------------+------+-----+---------+-------+
> > | name   | varchar(30)   | YES  |     | NULL    |       |
> > | salary | decimal(10,2) | YES  |     | NULL    |       |
> > +--------+---------------+------+-----+---------+-------+
> > 2 rows in set (0.03 sec)
> >
> > mysql> insert into employee value('name 1',0),('name 2',1000)
> >     -> ;
> > Query OK, 2 rows affected (0.05 sec)
> > Records: 2  Duplicates: 0  Warnings: 0
> >
> > mysql> select * from employee;
> > +--------+---------+
> > | name   | salary  |
> > +--------+---------+
> > | name 1 |    0.00 |
> > | name 2 | 1000.00 |
> > +--------+---------+
> > 2 rows in set (0.02 sec)
> >
> > Not null is checked :
> > mysql> insert into employee value('name 1',null);
> > ERROR 1048 (23000): Column 'salary' cannot be null
> >
> > But not a not '0' check constraint.
> >
> > Mathias
> >
> > Selon Rhino <[EMAIL PROTECTED]>:
> >
> >
> >>Are you sure this kind of constraint is supported in MySQL 4.1?
> >>
> >>I'm not saying they aren't, I just don't remember. Unless you're sure they
> >>are, you should check the manual.
> >>
> >>Rhino
> >>
> >>----- Original Message -----
> >>From: "Rodrigo Sakai" <[EMAIL PROTECTED]>
> >>To: <mysql@lists.mysql.com>
> >>Sent: Friday, May 20, 2005 6:49 PM
> >>Subject: constraints
> >>
> >>
> >>  Hi, I need to do a constraint that checks if the field 'salary' of one
> >>table is not smaller than zero. Like:
> >>
> >>  create table employee (
> >>
> >>     name varchar(30),
> >>     salary numeric(10,2)
> >>
> >>     constraint  ck_salary check (salary > 0)
> >>  );
> >>
> >>  What´s the sintaxe? I'am not finding the correct sintaxe to do this
> >>constraint.
> >>
> >>  I'm using MySQL 4.1
>
>



-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to