Если я правильно понимаю ваш дизайн, таблица user_personal_data
разверните таблицу users
. В этой конструкции только одна (основная) таблица может иметь автоинкрементный столбец. В вашем случае это должен быть столбец id
в таблице users
. Вторая таблица user_personal_data
должна иметь внешний ключ, связанный с основной таблицей. Таким образом, ваши таблицы должны иметь следующую структуру:
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(256) NOT NULL,
`email` varchar(256) NOT NULL,
`password` varchar(256) NOT NULL,
`role` varchar(256) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `user_personal_data` (
`user_id` int(11) NOT NULL,
`fname` varchar(256) DEFAULT NULL,
`lname` varchar(256) DEFAULT NULL,
`city` varchar(256) DEFAULT NULL,
`age` varchar(256) DEFAULT NULL,
`education` varchar(256) DEFAULT NULL,
PRIMARY KEY (`user_id`),
CONSTRAINT `user_personal_data_FK` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
);
Для согласования сохраненной таблицы вы можете использовать триггер на AFTER INSERT
для таблицы users
, например:
CREATE DEFINER=`root`@`localhost` TRIGGER users_after_insert
AFTER INSERT
ON users FOR EACH ROW
INSERT INTO monster.user_personal_data (user_id) VALUES (NEW.id)
Решение, приведенное в MySQL синтаксис. У каждой над СУБД нет другого синтаксиса.