Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ошибка при insert'e данных из одной таблицы в другую  [new]
Unicod3
Member

Откуда:
Сообщений: 27
Доброго времени суток! речь о MsSQL Server 11.
Имеются две таблицы, данные надо вытащить из одной в другую. Написал insert с select'ом, ругается:
Violation of PRIMARY KEY constraint 'PK__NSI_REQ___3214EC2716FFA7BC'. Cannot insert duplicate key in object 'SAPEPDDB.NSI_REQ_HISTORY'. The duplicate key value is (0).

Я так понимаю что на новые записи в результирующей таблице на срабатывает авто инкремент для поля id и происходит попытка вставки записи с полем id = 0.
Вопрос почему? и как внести новые записи что бы не поломать порядок ID в результирующей таблице.
Спасибо

Модератор: Тема перенесена из форума "MySQL".


Сообщение было отредактировано: 26 фев 19, 17:37
26 фев 19, 17:30    [21819974]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при insert'e данных из одной таблицы в другую  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36695
Unicod3
MsSQL Server 11.
Такого в природе не существует. Существует 11.x или 2012.
Unicod3
Написал insert с select'ом, ругается:
Violation of PRIMARY KEY constraint 'PK__NSI_REQ___3214EC2716FFA7BC'. Cannot insert duplicate key in object 'SAPEPDDB.NSI_REQ_HISTORY'. The duplicate key value is (0).

Я так понимаю что на новые записи в результирующей таблице на срабатывает авто инкремент для поля id и происходит попытка вставки записи с полем id = 0.
Вопрос почему? и как внести новые записи что бы не поломать порядок ID в результирующей таблице.
Текст запроса и структуру таблиц предлагается угадать?

Сообщение было отредактировано: 26 фев 19, 17:45
26 фев 19, 17:42    [21819989]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при insert'e данных из одной таблицы в другую  [new]
Unicod3
Member

Откуда:
Сообщений: 27
Гавриленко Сергей Алексеевич,

11.0.70001.0

структура полей что заполняю достаточно проста, давайте попробуем с текстом запроса

INSERT INTO [EPD].[SAPEPDDB].[NSI_REQ_HISTORY] (CREATE_DATE,GID,REQUEST_NUMBER,REQUEST_STATUS,DIRECTORY_CODE,MTRCLASS,PRODUCTTYPE,MTRTYPE) 
  SELECT 
	CREATE_DATE,
	RECORD_NUMBER,
	REQUEST_NUMBER,
	REQUEST_STATUS,
	DIRECTORY_CODE,
	FIELD_VALUES as MTRCLASS,
	NULL as PRODUCTTYPE,
	NULL AS MTRTYPE
  FROM [EPD].[SAPEPDDB].[NSI_STEPS_HISTORY]
  WHERE FIELD_NAME LIKE @MTRClass
  AND DIRECTORY_CODE IS NOT NULL
  AND REQUEST_NUMBER = '286615'
26 фев 19, 17:50    [21819993]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при insert'e данных из одной таблицы в другую  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36695
Unicod3
структура полей что заполняю достаточно проста, давайте попробуем с текстом запроса
Т.е. вы серьезно думаете, что кто-то будет угадывать по вашему тексту, по какому полю сделан констрейнт?
26 фев 19, 18:02    [21820005]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при insert'e данных из одной таблицы в другую  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36695
Unicod3
11.0.70001.0
Такого тоже не существует
26 фев 19, 18:04    [21820006]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при insert'e данных из одной таблицы в другую  [new]
aleks222
Member

Откуда:
Сообщений: 855
Unicod3
в результирующей таблице не срабатывает авто инкремент

Слишком буйная фантазия.
Резонее предположить, что автоинкремента там ваще нету.
Или счетчик автоинкремента установлен в неправильное значение.
DBCC CHECKIDENT (   'SAPEPDDB.NSI_REQ_HISTORY'  )


Unicod3
Вопрос почему?

Это у вас надо спросить.

Unicod3
и как внести новые записи что бы не поломать порядок ID в результирующей таблице.

Вариантов масса:
1. Явно задать ID.
2. Включить, таки, автоинкремент.
2. Поправить значение счетчика автоинкремента.
27 фев 19, 05:30    [21820150]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при insert'e данных из одной таблицы в другую  [new]
Unicod3
Member

Откуда:
Сообщений: 27
попробую немного прояснить ситуацию. Вот скрипт на создание данной таблицы.
USE [EPD]
GO

/****** Object:  Table [SAPEPDDB].[NSI_REQ_HISTORY]    Script Date: 27.02.2019 9:22:54 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [SAPEPDDB].[NSI_REQ_HISTORY](
	[ID] [int] NOT NULL,
	[CREATE_DATE] [datetime] NULL,
	[GID] [nvarchar](20) NULL,
	[REQUEST_NUMBER] [nvarchar](50) NULL,
	[REQUEST_STATUS] [nvarchar](5) NULL,
	[DIRECTORY_CODE] [nvarchar](50) NULL,
	[MTRCLASS] [nvarchar](250) NULL,
	[PRODUCTTYPE] [nvarchar](250) NULL,
	[MTRTYPE] [nvarchar](250) NULL,
PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO

ALTER TABLE [SAPEPDDB].[NSI_REQ_HISTORY] ADD  DEFAULT ((0)) FOR [ID]
GO

ALTER TABLE [SAPEPDDB].[NSI_REQ_HISTORY] ADD  DEFAULT (N' ') FOR [GID]
GO

ALTER TABLE [SAPEPDDB].[NSI_REQ_HISTORY] ADD  DEFAULT (N' ') FOR [REQUEST_NUMBER]
GO

ALTER TABLE [SAPEPDDB].[NSI_REQ_HISTORY] ADD  DEFAULT (N' ') FOR [REQUEST_STATUS]
GO

ALTER TABLE [SAPEPDDB].[NSI_REQ_HISTORY] ADD  DEFAULT (N' ') FOR [DIRECTORY_CODE]
GO

ALTER TABLE [SAPEPDDB].[NSI_REQ_HISTORY] ADD  DEFAULT (N' ') FOR [MTRCLASS]
GO

ALTER TABLE [SAPEPDDB].[NSI_REQ_HISTORY] ADD  DEFAULT (N' ') FOR [PRODUCTTYPE]
GO

ALTER TABLE [SAPEPDDB].[NSI_REQ_HISTORY] ADD  DEFAULT (N' ') FOR [MTRTYPE]
GO
27 фев 19, 09:24    [21820194]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при insert'e данных из одной таблицы в другую  [new]
Unicod3
Member

Откуда:
Сообщений: 27
Скрин из контекстного меню ПКМ на бд -> свойства

К сообщению приложен файл. Размер - 8Kb
27 фев 19, 09:27    [21820196]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при insert'e данных из одной таблицы в другую  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30795
Unicod3
попробую немного прояснить ситуацию. Вот скрипт на создание данной таблицы.
CREATE TABLE [SAPEPDDB].[NSI_REQ_HISTORY](
	[ID] [int] NOT NULL,
Где же IDENTITY? нету.
27 фев 19, 09:29    [21820199]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при insert'e данных из одной таблицы в другую  [new]
Unicod3
Member

Откуда:
Сообщений: 27
alexeyvg,

как так-то...извините, чет с утра вчерашний вопрос ужас вызывает....
27 фев 19, 09:33    [21820201]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при insert'e данных из одной таблицы в другую  [new]
Диклевич Александр
Member

Откуда:
Сообщений: 608
и вот это вот зачем?
ALTER TABLE [SAPEPDDB].[NSI_REQ_HISTORY] ADD  DEFAULT ((0)) FOR [ID]
27 фев 19, 14:26    [21820589]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при insert'e данных из одной таблицы в другую  [new]
Unicod3
Member

Откуда:
Сообщений: 27
Диклевич Александр,

так студия сама генерит скрипт, нельзя что бы по умолчанию ничего не было
27 фев 19, 14:55    [21820666]     Ответить | Цитировать Сообщить модератору
 Re: ошибка при insert'e данных из одной таблицы в другую  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Unicod3
Диклевич Александр,

так студия сама генерит скрипт, нельзя что бы по умолчанию ничего не было


CREATE TABLE dbo.R
(
	a INT NOT NULL PRIMARY KEY
)
27 фев 19, 14:58    [21820671]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить