PDA

Просмотр полной версии : Структура БД, ошибка при вставке записи



Alexem
29.08.2016, 11:28
ГК 3.25

Пытаюсь вставить в таблицу Transacts любую строчку, ругается на поля с форматом datetime, насколько я понимаю.
Гуглёж не помогает.

INSERT INTO [gkArcade].[gk].[TRANSACTS_test3] (
[id]
,[date]
,[ACTIVITY]
,[CARD]
,[EMPLOYEE]
,[VALUE1]
,[UNIT1]
,[QUANT]
,[CREATOR]
,[CREATORADDR]
,[LEVEL]
,[DEAL]
)
VALUES ( newid(),
'2016-08-08 00:00:00.000',
321,
111,
11,
11,
1,
1,
1,
1,
1,
111
)

"Не удалось вставить явное значение в столбец отметки времени. Используйте INSERT со списком столбцов, чтобы исключить столбец отметки времени, либо вставьте DEFAULT в столбец отметки времени."

Пытался и в явную значение прописать, и default указать, и getdate(), и вообще исключаю столбец [date] - все равно та же ошибка.


Куда можно покопать? Сильно хочется вставить)
__________________________________________________ ________________

Аналогичные движения с таблицей GK_Transacts проходят "на ура".

Поле [date] - главный подозреваемый, оно not null, тип данных datetime.
Пристально всматривался в отличия [date] и там и там - нашёл только разный тип данных. datetime и datetime2.

И кто-нибудь знает зачем в ГК две почти "одинаковых" таблицы: transacts и gk_transacts?

Kavaru
29.08.2016, 14:11
Вставляйте без [id]

Alexem
29.08.2016, 14:58
Большое спасибо, вкатило без ошибок!

А по поводу смысла таблиц transacts и gk_transacts не в курсе?
Ради спортивного интереса =)

Kavaru
29.08.2016, 16:55
На счет смысла - не в курсе. Возможно какой-то хитрый механизм контроля валидности )
И, кстати, newid() нужен для [GUID], а не для [ID] ;)

NeiroN
31.08.2016, 16:33
таблица Transacts - устаревшая. После 3.27 в нее пишутся только зачисления. Все игры проходят через GK_Transacts

Также рекомендую использовать CONVERT(datetime,'2016-08-08 00:00:00.000')

Полная вставка записи об игре как то так выполняется(в моей программе):


DECLARE @t_guid uniqueidentifier, @deal INT
SELECT @t_guid = newid()
EXEC @deal = [gkArcade].[gk].[SYS_GEN_ID]
INSERT INTO [gkArcade].[gk].[TRANSACTS] (ACCOUNT, ACTIVITY, [DATE],
VALUE1, UNIT1, VALUE2, UNIT2, QUANT,
CREATOR, CREATORADDR, CREATORREF, CREATORDATE,
LEVEL2, [LEVEL], CARD, PERIOD )
VALUES( @CARD, 1, GETDATE(),
@PRICE, @UNIT, 1, 101, 1,
1, @MACHINE, NULL, GETDATE(),
@LEVEL2, @LEVEL, @CARD, NULL )
INSERT INTO [gkArcade].[gk].[GK_TRANSACTS]
([DATE],[ACTIVITY],[CARD],[ACCOUNT_TYPE],[VALUE],[QUANT],[CREATOR],[CREATORADDR]
,[DEAL],[LEVEL],[LEVEL2],[ARCADE],[GUID],[TRANSACT_GUID])
VALUES (GETDATE(),1,@CARD,11,0-@PRICE,1.00,1,@MACHINE,@deal,@LEVEL,@LEVEL2,1,newi d(),@t_guid)
INSERT INTO [gkArcade].[gk].[GK_TRANSACTS]
([DATE],[ACTIVITY],[CARD],[ACCOUNT_TYPE],[VALUE],[QUANT],[CREATOR],[CREATORADDR]
,[DEAL],[LEVEL],[LEVEL2],[ARCADE],[GUID],[TRANSACT_GUID])
VALUES (GETDATE(),1,@CARD,3,1.00,0.00,1,@MACHINE,@deal,@L EVEL,@LEVEL2,1,newid(),@t_guid)
Просто скажите что вам нужно и я напишу код))
P.S. Скучно