Absinthe
жожо
У меня есть 3 таблицы:
Правильно ли использовать RESTRICT на обновление данных для карт? Я не хочу, чтобы ничего не происходило, из доков не понял разницы с NO ACTION.
Как мне создать внешний индекс с maps.user_id на user.id?
Запрос
Выдает ошибку:
Can't create table 'mydatabase.#sql-1214_6a' (errno: 150)
Такую же ошибку выдает dbForge при добавлении при помощи мастера.
Что делать? Хочу чтобы при удалении пользователя user_id устанавливался в NULL, а при редактировании пользователя ничего не происходило.
PHP:
CREATE TABLE `data`(
id INT(11) NOT NULL AUTO_INCREMENT,
map_id INT(11) DEFAULT NULL,
name TEXT DEFAULT NULL,
`text` TEXT DEFAULT NULL,
panorama TEXT DEFAULT NULL,
video TEXT DEFAULT NULL,
top INT(11) DEFAULT NULL,
`left` INT(11) DEFAULT NULL,
user_id INT(11) DEFAULT NULL,
PRIMARY KEY (id),
INDEX FK_data_maps_id (map_id),
CONSTRAINT FK_data_maps_id FOREIGN KEY (map_id)
REFERENCES maps (id) ON DELETE CASCADE ON UPDATE RESTRICT
)
ENGINE = INNODB
AUTO_INCREMENT = 1
AVG_ROW_LENGTH = 16384
CHARACTER SET utf8
COLLATE utf8_general_ci;
CREATE TABLE maps(
id INT(11) NOT NULL AUTO_INCREMENT,
name TEXT DEFAULT NULL,
`date` TEXT DEFAULT NULL,
image TEXT DEFAULT NULL,
PRIMARY KEY (id)
)
ENGINE = INNODB
AUTO_INCREMENT = 1
AVG_ROW_LENGTH = 8192
CHARACTER SET utf8
COLLATE utf8_general_ci;
CREATE TABLE users(
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
nick VARCHAR(64) NOT NULL,
`group` VARCHAR(32) DEFAULT NULL,
theme VARCHAR(64) NOT NULL DEFAULT 'default',
`hash` VARCHAR(32) DEFAULT NULL,
email VARCHAR(128) NOT NULL,
gender ENUM('', 'male', 'female', 'trans') NOT NULL,
location TEXT DEFAULT NULL,
bio TEXT DEFAULT NULL,
web VARCHAR(128) DEFAULT NULL,
avatar VARCHAR(64) DEFAULT NULL,
email_validate VARCHAR(32) NOT NULL DEFAULT '',
share_email TINYINT(1) DEFAULT NULL,
email_news TINYINT(1) DEFAULT NULL,
name VARCHAR(64) DEFAULT NULL,
new_messages INT(11) NOT NULL DEFAULT 0,
karma INT(11) NOT NULL DEFAULT 0,
remind_code VARCHAR(32) DEFAULT NULL,
points_free INT(11) NOT NULL DEFAULT 0,
points_paid INT(11) NOT NULL DEFAULT 0,
email_new_friends TINYINT(1) NOT NULL DEFAULT 0,
email_new_karma TINYINT(1) NOT NULL DEFAULT 0,
smf_id INT(11) DEFAULT NULL,
identifier TEXT DEFAULT NULL,
last_online DATETIME DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE INDEX id (id),
UNIQUE INDEX nick (nick),
INDEX nick_hash (nick, `hash`)
)
ENGINE = INNODB
AUTO_INCREMENT = 1
CHARACTER SET utf8
Как мне создать внешний индекс с maps.user_id на user.id?
Запрос
PHP:
ALTER TABLE `data`
ADD CONSTRAINT FK_data_users_id FOREIGN KEY (user_id)
REFERENCES users (id) ON DELETE SET NULL ON UPDATE NO ACTION;
Can't create table 'mydatabase.#sql-1214_6a' (errno: 150)
Такую же ошибку выдает dbForge при добавлении при помощи мастера.
Что делать? Хочу чтобы при удалении пользователя user_id устанавливался в NULL, а при редактировании пользователя ничего не происходило.