Таблица отношений не обновляется, когда я вставляю записи

0

Может быть, это может быть глупый вопрос. Итак, я создал следующую таблицу:

create table USER(
    ID int NOT NULL AUTO_INCREMENT primary key,
    firstname varchar(50) not null,
    lastname varchar(50) not null,
    password varchar(20) not null,
    emailU varchar(100) not null
);

create table POST(
    ID_User int,
    ID_Tweet int,
    primary key(ID_User, ID_Tweet),
    foreign key(ID_User) references USER(ID) on update cascade on delete cascade,
    foreign key(ID_Tweet) references TWEET(ID) on update cascade on delete cascade
);

create table TWEET(
    ID int NOT NULL AUTO_INCREMENT primary key,
    Text varchar(200)
);

Когда я вставляю что-то, например:

insert into USER (firstname, lastname, password, emailU) values ('X', 'Y', 'XY', '[email protected]');

а также

insert into TWEET (text) values ('Something');

Он корректно обновляет таблицы USER и TWEET, но таблица POST остается пустой. Зачем? Он должен быть обновлен с ID_User и ID_Tweet, или я ошибаюсь?

Теги:
entity-relationship
foreign-keys

1 ответ

0

foreing key - это просто ограничение, чтобы сохранить постоянство таблицы, поэтому у вас нет неправильных данных (например, сиротская почта без какого-либо пользователя). Так как MatBailie говорит, что данные не заполняются автоматически.

Вы не указали свои rdbms, но после вставки вам нужно получить идентификатор last_insert. например, на сервере Sql

Как получить последний вставленный идентификатор?

И затем вы используете его для создания новой записи на post.

Кроме того, возможно, ваша модель слишком проста, но прямо сейчас я не вижу необходимости, чтобы у вас был стол POST потому что новые данные не добавляют к этому отношению.

Так что лучше, если вы user_id поле user_id в твит

create table TWEET(
    ID int NOT NULL AUTO_INCREMENT primary key,
    Text varchar(200),
    ID_User int,
    foreign key(ID_User) references USER(ID) on update cascade on delete cascade,
);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню