powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / задваивание результата выборки
6 сообщений из 6, страница 1 из 1
задваивание результата выборки
    #40013577
dsalodki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После того как хранимаяпроцедура отработала два раза я получил [VersionNo] 25, 27.
Что не так? Почему [VersionNo] не 24, 25 ?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
---
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER PROCEDURE [dbo].[sp_Insert_XML] 
    	-- Add the parameters for the stored procedure here
    	@xml xml,
    	@customerRef nvarchar(40)
    
    	
    AS
    BEGIN
    
    	DECLARE @SQLStatement nvarchar(4000);
    	DECLARE @SQLVersionNo nvarchar(1000);
    
    	SET NOCOUNT ON;

    	SELECT @SQLVersionNo = ISNULL(MAX([VersionNo]), 0)+1 FROM GDPR_XMLmodels where CustomerReference = CONVERT(nvarchar(40), @customerRef);
    
    	INSERT INTO GDPR_XMLmodels(Id, CustomerReference, LoadTime, VersionNo,  xmlDocument)	
    	SELECT NEWID(), CONVERT(nvarchar(40), @customerRef), GETDATE(), CONVERT(smallint, @SQLVersionNo ), @xml;
    
    	raiserror('Fejl...', 10,1) WITH NOWAIT;
    
    END
...
Рейтинг: 0 / 0
задваивание результата выборки
    #40013590
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конвертация из nvarchar(40) в nvarchar(40) выглядит мило.
Конвертация "не понятный тип поля VersionNo" -> int -> nvarchar(1000) -> smallint выглядит тупо.
Вопрос "почему вместо миллиона долларов я получил кукиш, при этом ничего не делая для получения миллиона" выглядит ну уж совсем по-идиотски.

Может, переформулируете?
...
Рейтинг: 0 / 0
задваивание результата выборки
    #40013591
dsalodki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,

/****** Object: StoredProcedure [dbo].[sp_Insert_XML] Script Date: 10/30/2020 9:09:27 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_Insert_XML]
-- Add the parameters for the stored procedure here
@xml xml,
@customerRef nvarchar(40)

AS
BEGIN
DECLARE @SQLVersionNo smallint;

-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.


SET NOCOUNT ON;

-- SELECT NEWID(), CONVERT(nvarchar(40), '''+@customerRef+'''), GETDATE(), CONVERT(smallint,'''+ @version + '''), CONVERT(XML, BulkColumn) AS BulkColumn

SELECT @SQLVersionNo = ISNULL(MAX([VersionNo]), 0)+1 FROM GDPR_XMLmodels where CustomerReference = @customerRef;

INSERT INTO GDPR_XMLmodels(Id, CustomerReference, LoadTime, VersionNo, xmlDocument)
SELECT NEWID(), @customerRef, GETDATE(), @SQLVersionNo, @xml;

raiserror('Fejl...', 10,1) WITH NOWAIT;

END

---

но всё же, почему VersionNo прибавляет не 1, а 2 ?

извиняюсь за хаос, я переделывал ...
...
Рейтинг: 0 / 0
задваивание результата выборки
    #40013592
dsalodki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dsalodki,

нашёл триггер, но сомневаюсь что он задействован, ведь на обновление

/****** Object: Trigger [dbo].[tr_GDPR_XMLmodels] Script Date: 10/30/2020 9:19:04 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Batch submitted through debugger: SQLQuery38.sql|7|0|C:\Users\ClausRaae\AppData\Local\Temp\~vsD927.sql
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER TRIGGER [dbo].[tr_GDPR_XMLmodels] ON [dbo].[GDPR_XMLmodels]
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
UPDATE GDPR_XMLmodels
SET versionNo = (SELECT ISNULL(MAX(versionNo), 0)+1
FROM GDPR_XMLmodels
where GDPR_XMLmodels.CustomerReference = inserted.CustomerReference)
FROM inserted
WHERE GDPR_XMLmodels.Id = inserted.Id;


END
...
Рейтинг: 0 / 0
задваивание результата выборки
    #40013594
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да, AFTER INSERT -- это же как раз про обновление.
...
Рейтинг: 0 / 0
задваивание результата выборки
    #40013595
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dsalodki
ведь на обновление
dsalodki
AFTER INSERT
С каких пор insert стало обновлением?

dsalodki
SELECT @SQLVersionNo = ISNULL(MAX([VersionNo]), 0)+1
dsalodki
SET versionNo = (SELECT ISNULL(MAX(versionNo), 0)+1
Вас ждут неприятные сюрпризы при многопользовательской работе.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / задваивание результата выборки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]