Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2016, 17:23   #1
RussianNinja
 
Регистрация: 09.01.2016
Сообщений: 4
По умолчанию PostgreSQL в C# Автоинкремент

Как сделать чтобы при добавлении данных в таблицу id прописывался автоматически и увеличивался на 1?
Код:
NpgsqlConnection con = new NpgsqlConnection("Server=localhost;Port=5432;User=postgres;Password=0000;Database=myfirstDB;");
con.Open();
var cmd3 = new NpgsqlCommand("INSERT INTO history values(@history_url)", con);
//cmd3.Parameters.AddWithValue("@history_id", id);//ID=ID of first table
cmd3.Parameters.AddWithValue("@history_url", url);
            //cmd3.Parameters.AddWithValue("@header", header);//ID=ID of first table
            cmd3.ExecuteNonQuery();
            con.Close();
Или может быть нужно сделать какой-либо цикл, в котором считывается текущее значение id из таблицы, а при добавлении записи в поле url он бы увеличивался?
RussianNinja вне форума Ответить с цитированием
Старый 17.01.2016, 18:10   #2
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

https://www.google.by/webhp?sourceid...auto+increment
come-on вне форума Ответить с цитированием
Старый 17.01.2016, 20:14   #3
RussianNinja
 
Регистрация: 09.01.2016
Сообщений: 4
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
Да я гуглил, в PostgreSQL нету автоинкремента, но есть некие SEQUINCE, с их помощью можно сделать, что я и сделал) Проблема в том, что если добавлять данные вручную или с помощью скрипта в pgadmin, то автоинкремент работает, а при добавлении через visual studio - нет.
RussianNinja вне форума Ответить с цитированием
Старый 17.01.2016, 20:17   #4
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Ага, визуал студия все портит.
come-on вне форума Ответить с цитированием
Старый 18.01.2016, 01:01   #5
RussianNinja
 
Регистрация: 09.01.2016
Сообщений: 4
По умолчанию

Короче разобрался. Может кому пригодится. Нужно использовать выражение вида:
Код:
NpgsqlCommand cmd1 = new NpgsqlCommand("INSERT INTO history VALUES (nextval('auto_id'), @history_url)", con);
где "auto_id" - это последовательность(SEQUENCE), созданная в таблице базы данных.
Код таблицы:
Код:

CREATE TABLE public.history
(
  history_id integer NOT NULL DEFAULT nextval('auto_id'::regclass),
  history_url text,
  CONSTRAINT history_pkey PRIMARY KEY (history_id)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE public.history
  OWNER TO postgres;
RussianNinja вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоинкремент в PreparedStatement DavidRealy SQL, базы данных 7 05.04.2015 16:07
Автоинкремент в FB Dozent БД в Delphi 4 20.12.2012 09:21
автоинкремент в запросе ГОСЕАН БД в Delphi 13 01.02.2008 16:12
автоинкремент с нуля azat БД в Delphi 5 18.12.2007 08:26
Автоинкремент Askat БД в Delphi 3 18.06.2007 13:39