Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Повторяющееся значение ключа и update  [new]
A.V.O.I.D
Member

Откуда:
Сообщений: 17
Create Table Receiving
(id_Declare varchar(15) NOT NULL Primary Key,
id_Goods varchar(15) NOT NULL,
id_Creator varchar(15) NOT NULL,
Price varchar(15) NOT NULL,
Number varchar(5) NOT NULL)


Есть таблица - Получение товара.
Дело в том, что на каждую накладную можно добавить несколько товаров. А у меня в бд не выходит это сделать, т.к. id_Declare(айди_накладной) ключ.поле и когда я пытаюсь добавить запись с таким же id_Declare, ошибка.

Сообщение 2627, уровень 14, состояние 1, строка 1
Нарушено "PK__Receivin__D6AFFC7032742A8C" ограничения PRIMARY KEY. Не удается вставить повторяющийся ключ в объект "dbo.Receiving". Повторяющееся значение ключа: (1).
Выполнение данной инструкции было прервано.


Что делать? Я полнейший чайник в SQL, как делать триггеры и процедуры не знаю. Очень нужна ваша помощь
11 июн 15, 17:23    [17761625]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4391
Приведите здесь текст скрипта, вставляющий записи.
Оформите только как код.
11 июн 15, 17:33    [17761667]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37138
Create Table Receiving(
    id_Declare varchar(15) NOT NULL,
    id_Goods varchar(15) NOT NULL,
    id_Creator varchar(15) NOT NULL,
    Price varchar(15) NOT NULL,
    Number varchar(5) NOT NULL

    , primary key (
        id_Declare
        , id_Goods
    )
)
11 июн 15, 17:36    [17761684]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
o-o
Guest
A.V.O.I.D,

именно в вашу таблицу в одну накладную можно добавить только один товар.
потому что или 2 таблицы надо иметь: для накладных и для товаров,
или убирайте ПК
11 июн 15, 17:37    [17761686]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
o-o
Guest
Гавриленко Сергей Алексеевич
Create Table Receiving(
    id_Declare varchar(15) NOT NULL,
    id_Goods varchar(15) NOT NULL,
    id_Creator varchar(15) NOT NULL,
    Price varchar(15) NOT NULL,
    Number varchar(5) NOT NULL

    , primary key (
        id_Declare
        , id_Goods
    )
)

ага, теперь скажет, а у меня надо 2 раза товар по разной цене добавить,
т.к. сперва взяли 1 на пробу, откупорили, одобрили,
решили 10000 взять, они уже по оптовой цене прошли,
а ту одну уже в накладную внесли и отмена не предусмотрена

Price varchar(15), Number varchar(5) -- это круто, когда их перемножите, автоматом получите сумму прописью
11 июн 15, 17:47    [17761722]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
A.V.O.I.D
Member

Откуда:
Сообщений: 17
o-o, сейчас я могу в свою таблицу Receiving добавить только 1 товар с id_Declare - "1". Следующий товар можно добавить только с id_Declare-"2".
А мне надо сделать так, что бы я мог добавить товар 2 с id_Declare -"2" и т.д.

Гавриленко Сергей Алексеевич,
Просто заново создать таблицу?
с этим кодом?

SQL2008,

USE ITStore
GO
INSERT INTO Receiving
VALUES ('1', '1', '101','750','2');
GO

USE ITStore
GO
INSERT INTO Receiving
VALUES ('1', '1', '101','750','2');
GO

USE ITStore
GO
INSERT INTO Receiving
VALUES ('2', '2', '102','1250','2');
GO

USE ITStore
GO
INSERT INTO Receiving
VALUES ('3', '3', '103','750','2');
GO

USE ITStore
GO
INSERT INTO Receiving
VALUES ('4', '4', '101','1350','1');
GO

USE ITStore
GO
INSERT INTO Receiving
VALUES ('5', '5', '105','750','2');
GO
11 июн 15, 17:56    [17761764]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
A.V.O.I.D
Member

Откуда:
Сообщений: 17
o-o, сейчас я могу в свою таблицу Receiving добавить только 1 товар с id_Declare - "1". Следующий товар можно добавить только с id_Declare-"1".
А мне надо сделать так, что бы я мог добавить товар 2 с id_Declare -"2" и т.д.
11 июн 15, 18:00    [17761779]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
A.V.O.I.D
Member

Откуда:
Сообщений: 17
o-o, сейчас я могу в свою таблицу Receiving добавить только 1 товар с id_Declare - "1". Следующий товар можно добавить только с id_Declare-"2".
А мне надо сделать так, что бы я мог добавить товар 2 с id_Declare -"1" и т.д.
прошу прощения, не могу исправить прошлое сообщение
11 июн 15, 18:03    [17761789]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
msLex
Member

Откуда:
Сообщений: 8694
o-o
Price varchar(15), Number varchar(5) -- это круто, когда их перемножите, автоматом получите сумму прописью

11 июн 15, 18:09    [17761820]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
A.V.O.I.D
Member

Откуда:
Сообщений: 17
Простите, сменить на другой тип данных нужно?
11 июн 15, 18:17    [17761846]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
A.V.O.I.D, да, причем ВСЕМ полям надо поменять тип данных.
11 июн 15, 18:20    [17761858]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
A.V.O.I.D
Member

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

А почему всем? О_о
Разве не цену и кол-во только?
11 июн 15, 18:51    [17761937]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
085
Guest
ТС Вы хоть понимаете какой гемарой будет в работе с неправельно выбранным форматом данных, только не говорите что на клиентской части все благополучно разрулите.

Всегда храните данные в БД в том типе данных который преднозначен для них.
11 июн 15, 19:01    [17761971]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31778
A.V.O.I.D
Minamoto,

А почему всем? О_о
Разве не цену и кол-во только?

Например, почему id_Declare имеет тип varchar(15)?

Как вы себе представляете это, как вы будете вставлять новые записи?
11 июн 15, 20:58    [17762393]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
A.V.O.I.D
Member

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

я уже исправил. Сделал все, что надо)
Спасибо за помощь)
Теперь и добавляются)

Но появилась новая проблема.
Есть заполненая таблица Receiving.
При исполнении процедуры, выбивает ошибку(ниже процедуры). Как исправить?Как сделать через апдейт?
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE PROCEDURE Receiving
	-- Add the parameters for the stored procedure here
	@id_Declare int, 
	@id_Goods int,
	@id_Creator int,
	@Price int,
	@Number int
AS
declare @v_id integer
 DECLARE cur_cust_id CURSOR FOR
 SELECT MAX(id_Declare) 
 FROM dbo.Receiving

BEGIN
 open cur_cust_id
 fetch cur_cust_id into @v_id
 
   INSERT INTO Receiving
           (id_Declare
           ,id_Goods
           ,id_Creator
           ,Price
           ,Number
           )
     VALUES
           (@v_id+1, 
	       @id_Goods ,
	       @id_Creator,
	       @Price,
	       @Number
           
           )

 close cur_cust_id
 DEALLOCATE cur_cust_id
END 
GO

Сообщение 2714, уровень 16, состояние 3, процедура Receiving, строка 6
В базе данных уже существует объект с именем "Receiving".


Вот таблица
Create Table Receiving
(id_Declare int NOT NULL,
id_Goods int NOT NULL,
id_Creator int NOT NULL,
Price int NOT NULL,
Number int NOT NULL,
primary key (id_Declare, id_Goods)
);
11 июн 15, 21:34    [17762528]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
A.V.O.I.D
Member

Откуда:
Сообщений: 17
Надо сделать так, что бы процедура добавляла запись в таблицу Receiving
11 июн 15, 21:36    [17762540]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37138
Не надо называть процедуру и таблицу одинаково. Сервер путаться в них изволит.
11 июн 15, 23:38    [17762863]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
A.V.O.I.D,

Разные типы данных придуманы не для того, чтобы все поля одной таблицы имели один и тот же тип данных, будь то varchar() или int.
11 июн 15, 23:46    [17762892]     Ответить | Цитировать Сообщить модератору
 Re: Повторяющееся значение ключа и update  [new]
A.V.O.I.D
Member

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

спасибо)Все окей.
Осталось понять, как применить update
12 июн 15, 00:26    [17762974]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить