@Mark321

Почему возникает ошибка при записи в базу данных(serial)?

Добрый день, отловил проблему, почему не делалась запись в базу данных, но т.к я только делаю свои первые шаги в направлении бд, не понимаю некоторый момент
Использую постгресс, имею следующие таблицы
И делаю запрос на запись (как указан ниже)
Все отрабатывает, запись делается, но проблема в том, что у меня айдишники в таблицах сериал(которые должны автоматически увеличиваться)
вот с доки вырезка

serial 4 байта целое с автоувеличением 1 .. 2147483647

Как поправить запрос, что бы у меня айдишники автоматически заполнялись по мере их увеличения в бд, а не приходилось руками хардкодить цифры

CREATE TABLE accounts (
	user_id serial PRIMARY KEY,
	username VARCHAR ( 50 ) UNIQUE NOT NULL,
  	surname VARCHAR ( 50 ) UNIQUE NOT NULL,
	password VARCHAR ( 50 ) NOT NULL,
	email VARCHAR ( 255 ) UNIQUE NOT NULL,
	created_on TIMESTAMP NOT NULL,
        last_login TIMESTAMP 
);

CREATE TABLE roles(
   role_id serial PRIMARY KEY,
   role_name VARCHAR (255) UNIQUE NOT NULL
);

CREATE TABLE account_roles (
  user_id INT NOT NULL,
  role_id INT NOT NULL,
  grant_date TIMESTAMP,
  PRIMARY KEY (user_id, role_id),
  FOREIGN KEY (role_id)
      REFERENCES roles (role_id),
  FOREIGN KEY (user_id)
      REFERENCES accounts (user_id)
);

Сам запрос

INSERT INTO accounts (user_id,username, surname, password, email, created_on, last_login) VALUES (2,'John2', 'Doe2', 'p2assword123', 'jo2hn@example.com', NOW(), NOW());
INSERT INTO roles (role_id,role_name) VALUES (2,'admin');
INSERT INTO account_roles (user_id, role_id, grant_date) VALUES (2,2,NOW())
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
Maksim_64
@Maksim_64
Data Analyst
Как поправить запрос, что бы у меня айдишники автоматически заполнялись по мере их увеличения в бд, а не приходилось руками хардкодить цифры


На то он и serial что бы при вставлении не указывать это поле, оно будет автоматически увеличиваться на один при добавлении новой записи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы