Создаю таблицу users:
CREATE TABLE users(
id UUID DEFAULT uuid_generate_v4(),
email TEXT,
name TEXT,
password TEXT,
PRIMARY KEY(id)
);
INSERT INTO users(id, email, name, password) VALUES('bdfe5653-f75a-42b4-93d2-f4f739c0bc7d', 'test@mail.com', 'Jone', 'somehashedpasswprd');
Далее таблицу posts:
CREATE TABLE posts(
id uuid DEFAULT uuid_generate_v4(),
authorID uuid,
text TEXT,
FOREIGN KEY(authorID) REFERENCES users(id)
);
INSERT INTO posts(authorID, text)
VALUES('bdfe5653-f75a-42b4-93d2-f4f739c0bc7d', 'Post description I wrote the post for demonstation how I can use of sql');
Дальше мне нужно было изменить ограничение внешнего ключа, для того чтобы после удаления пользователя, посты удалялись автоматически:
ALTER TABLE posts
DROP CONSTRAINT authorID;
ALTER TABLE posts
ADD CONSTRAINT authorID
FOREIGN KEY(authorID)
REFERENCES users(id)
ON DELETE CASCADE
ON UPDATE CASCADE;
Окей, ограничение дефолтное снял и добавил свое, теперь я пытаюсь удалить пользователя который был привязал к посту:
DELETE FROM users WHERE id = 'bdfe5653-f75a-42b4-93d2-f4f739c0bc7d'';
Сделать я этого не могу, пишет ошибку:
"UPDATE или DELETE в таблице "users" нарушает ограничение внешнего ключа "posts_authorid_fkey" таблицы "posts"?"
Почему?! Ведь я прописал свое ограничение и по задумке, должен был удалиться пост вместе с пользователем...