Mysql - вот такой интересный запрос... В чем дело?

Автор: w@rrgoth Дата: 23.02.2006 00:31 сервер версии 5.0


Итак. Создаем таблицы:

create table accounts (
accountid int not null primary key auto_increment,
login varchar(30),
password varchar(30)
)type=InnoDB;

create table users (
userid int not null primary key auto_increment,
name varchar(30),
email varchar(30),
accountid int not null references accounts(accountid)
)type=InnoDB;

Далее выполним вставку в таблицу accounts, получив вот что:

accountid | login | password
----------+---------+---------
1 | mylogin | mypass

Теоретически, запрос
insert into users values('','myname','myemail',2);
пройти не дожен из-за того что accountid=2 отсутствует в поле
accountid таблицы accounts.

Однако, запрос выполняется.
Почему ?
И как с этим злом бороться?
Может каких настроек я не знаю?
Re: mysql - вот такой интересный запрос... В чем дело? 23.02.2006 00:48ShaMAN Попробуй добавить CONSTRAINT на accountid
---
CREATE TABLE `users` (
`userid` int(11) NOT NULL auto_increment,
`name` varchar(30) default NULL,
`email` varchar(30) default NULL,
`accountid` int(11) NOT NULL,
PRIMARY KEY (`userid`),
KEY `accountid` (`accountid`),
CONSTRAINT `users_ibfk_1` FOREIGN KEY (`accountid`) REFERENCES `accounts` (`accountid`)
) ENGINE=InnoDB DEFAULT CHARSET=koi8r
---
RSS-материал