:(, oh how I wanted it to be true in MySQL 4.1, maybe it's a bug?.. I
don't know realy...
Here is Copy From Console:
mysql> create table `temp` (
-> col1 int(9) NOT NULL,
-> col2 date NOT NULL,
-> col3 Varchar(30) NOT NULL,
-> col4 Varchar(30));
Query OK, 0 rows affected (0.02 sec)
mysql> desc `temp`;
+-------+-------------+-------------------+------+-----+------------+---
----+
| Field | Type | Collation | Null | Key | Default |
Extra |
+-------+-------------+-------------------+------+-----+------------+---
----+
| col1 | int(9) | binary | | | 0 |
|
| col2 | date | latin1_swedish_ci | | | 0000-00-00 |
|
| col3 | varchar(30) | latin1_swedish_ci | | | |
|
| col4 | varchar(30) | latin1_swedish_ci | YES | | NULL |
|
+-------+-------------+-------------------+------+-----+------------+---
----+
4 rows in set (0.01 sec)
As you see, default NULL is only for col3 - Nullable column :(
P.S. there is no matter what type of table you create (MyISAM, InnoDB,
etc.).
So, Cal Evans, maybe you can try above create statement and email MySQL
output?
-----Original Message-----
From: Cal Evans [mailto:[EMAIL PROTECTED]
Sent: Tuesday, October 07, 2003 9:04 PM
To: Arūnas Milašauskas
Cc: Fortuno, Adam; [EMAIL PROTECTED]
Subject: Re: FW: MySQL not null vs MSAccess required
I hate to disagree with you but in the 30+ databases I've created in
MySQL, not defining a default value leaves the default value as NULL.
Setting that field to NOT NULL means that I have to enter something or
the record won't commit.
=C=
p.s. I use the 3.xx series, maybe this behavior has changed in 4 but I
hope not.
* Cal Evans
* http://www.eicc.com
* We take care of your IT,
* So you can take care of your business.
*
* I think inside the sphere.
Arūnas Milašauskas wrote:
> No, no, no ... Dear Friends, defining column as NOT NULL and do not
> specifying default value does not means that there is no default value
> at all. MySQL defines default value for that column of his on decision
> (for Date it's '0000-00-00', for text column's it is '', for number
> column's it is '0' and so on...)
>
> P.S. I use MySQL 4.1alpha, but I am true it is on other versions
> too.
>
> Regards,
> Arunas
>
> -----Original Message-----
> From: Cal Evans [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, October 07, 2003 8:51 PM
> To: Arūnas Milašauskas
> Cc: Fortuno, Adam; [EMAIL PROTECTED]
> Subject: Re: FW: MySQL not null vs MSAccess required
>
>
> Of course the OT NULL is not firing, you put DEFAULT ''. This defeats
> the purpose of NOT NULL since every new record written has a default
> value that IS NOT NULL. (Whether the user entered the field or not.
>
> remove the DEFAULT form the table definition and leave the NOT NULL.
> This will prevent ANY program (even Access) from writing to the table
> without specifying a value.
>
> Now if you want more than that you'll have to write it into your FE.
> (i.e.not null and not '')
>
> HTH,
> =C=
> * Cal Evans
> * http://www.eicc.com
> * We take care of your IT,
> * So you can take care of your business.
> *
> * I think inside the sphere.
>
>
> Arūnas Milašauskas wrote:
>
>>Yes it's true, when someone enter's NULL value, but when someone does
>>not even touch that field on the form? :(
>>
>> In other DBMS it's like a rule to make all possible chechking on
>>DB for any unforeseen accident... So I'm hopefully waiting for MySQL
>
> 5xx
>
>>relise to realize this...
>> As for now I see that there is no other way as to make check
>>constraint's validation (even for Required columns :( ) on forms on
>>client side :(
>>
>>-----Original Message-----
>>From: Fortuno, Adam [mailto:[EMAIL PROTECTED]
>>Sent: Tuesday, October 07, 2003 8:33 PM
>>To: Arūnas Milašauskas
>>Subject: RE: MySQL not null vs MSAccess required
>>
>>
>>Arunas,
>>
>>Then take change the table's definition to make the CustName field NOT
>>NULL
>>and don't include a default value. When someone attempts to change the
>>CustName field to NULL, you'll get a runtime error.
>>
>>Regards,
>>Adam
>>
>>-----Original Message-----
>>From: Arūnas Milašauskas
>>Sent: Tuesday, October 07, 2003 8:33 PM
>>To: '[EMAIL PROTECTED]'
>>Subject: FW: MySQL not null vs MSAccess required
>>
>>
>>
>>MSAccess as frontend :) sorry, you're right.
>>
>> So, I defined column without default value, but nothing
>>changed... I still can enter empty values into field :(
>>
>> Now, actualy I want MySQL to rise run-time error, because there
>>are many forms in access and DB structure is changing ... I mean it is
>>better (I think) to capture MySQL run-time errors (I have library
>
> writen
>
>>for this) than edit every form trigger's after changing NOT NULL
>
> columns
>
>>in DB especially if there is more than one form allowing to enter data
>>into such tables...
>>
>> Thanks, for thought about form self validation ;)
>>
>>Regards,
>> Arunas
>>
>>
>>
>>
>>-----Original Message-----
>>From: Fortuno, Adam [mailto:[EMAIL PROTECTED]
>>Sent: Tuesday, October 07, 2003 8:09 PM
>>To: Arūnas Milašauskas
>>Cc: [EMAIL PROTECTED]
>>Subject: RE: MySQL not null vs MSAccess required
>>
>>
>>Arunas,
>>
>>Actually, I think you mean MySQL is the backend for MS Access.
>>
>>Don't assume columns that are NOT NULL must have a default value. You
>>are
>>welcome to define columns as NOT NULL without a default value. Doing
>>this
>>will force the client (the Access form's) to require a value before
>>inserting the record.
>>
>>CREATE TABLE customers (
>> ID INT(9) NOT NULL,
>> CustName VARCHAR(30) NOT NULL,
>> ...
>>) Type = MyISAM;
>>
>>Since you're using an MS Access front-end to allow users to enter
>
> data.
>
>>Put
>>logic in your form to require the users to populate a value for the
>>customer
>>name. Something like this:
>>
>>** Assuming you have a form with customer name field named
>
> "tbCustName".
>
>>Private Sub Form_BeforeUpdate()
>> Dim strMsg as String
>>
>>On Error Resume Next
>>
>> If (Not ValidateSelf()) Then
>> '** Notify the user that the form failed validation.
>> Let strMsg = "Please ensure all required fields are populated."
>> Call MsgBox(strMsg, vbOkOnly)
>>
>> '** Cancel's the save event.
>> Call DoCmd.CancelEvent
>> EndIf
>>End Sub
>>
>>Private Function ValidateSelf()
>> Dim blnIsValid As Boolean
>>
>> '** Determine if the field has a value.
>> If (Not Nz(Me.tbCustName.Value, "") = "") Then Let blnIsValid = True
>>
>> '** Return the results of the validation process.
>> Let ValidateSelf = blnIsValid
>>End Function
>>
>>Its been a while since I've used Access for soemthing like this. My
>
> VBA
>
>>might be a little rusty. The point is you want to enforce user
>>population of
>>the customer name field in the client. If you do it from MySQL, the
>
> odbc
>
>>driver will generate a runtime error, which Access will then need to
>>capture
>>- you should capture errors anyway.
>>
>>Regards,
>>Adam
>>
>>-----Original Message-----
>>From: Arunas Mila?auskas [mailto:[EMAIL PROTECTED]
>>Sent: Tuesday, October 07, 2003 12:23 PM
>>To: [EMAIL PROTECTED]
>>Subject: MySQL not null vs MSAccess required
>>
>>
>>Hello,
>> I'm Using MSAccess as backend for my MySQL database. Tables are
>>linked with MyODBC 3.51, so all data user enters through MSAccess
>
> forms.
>
>> I need that some fields (CustName) in MySQL table (CUSTOMERS)
>>would be required, it means, that user must fill a value into that
>
> field
>
>>(CustName) displayed on MSAccess form (Customers).
>>
>> MySQL table create statement is:
>> create table CUSTOMERS (ID `ID` int(9) NOT NULL,
>>`CustName` Varchar(30) NOT NULL DEFAULT '');
>> Default value in table declaration is requred as you know for
>>NOT NULL columns.
>>
>> The problem is:
>> When user enters a new record in MSAccess form and does
>>not even touch field "CustName", new record is created with empty
>
> string
>
>>as default value!!!!
>> If user enters for example "1" and then deletes the
>>value in MSAccess form, Access reports, that value must not be NULL.
>
> But
>
>>what can I do if user does not even go into that field and leave empty
>>field? User Must Enter A Value!!!! How to do this without writing many
>>code in every form with required (NOT NULL) fields?
>>
>>
>> Thanks for any help, It is needed very very much because for now
>>any user can not fill required fields!
>> It would be very very appreciated
>>
>>Regards, Arunas
>>
>
>
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]