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

Откуда: SPb
Сообщений: 737
необходимо вставить выборку с временной меткой

выдает следующую ошибку:

Msg 273, Level 16, State 1, Line 17
Cannot insert an explicit value into a timestamp column. Use INSERT with a column list to exclude the timestamp column, or insert a DEFAULT into the timestamp column.


через insert into <table> (<col 1>, <col 2>...) values (x, y....) никак, так как выборка множественная.

Заранее спасибо!

create table #TempContainerHistory
(
ContainerID int,
ArrivalDate smalldatetime,
CurrentTerminalID int,
FallDate smalldatetime,
NumberRelease nvarchar(50),
ForwarderID int,
CurrencyCabotage nvarchar(7),
PriceCabotage float,
ComingTerminalID int,
Note nvarchar(50),
[Timestamp] timestamp,
Deleted bit
)

insert into #TempContainerHistory
exec
ContainerHistorySelection 2286


alter procedure [dbo].[ContainerHistorySelection]
@ContainerID int = 0
AS

select
ContainerID,
ArrivalDate,
CurrentTerminalID,
FallDate,
NumberRelease,
ForwarderID,
CurrencyCabotage,
PriceCabotage,
ComingTerminalID,
Note,
[Timestamp],
Deleted
from
ContainerHistory
where
ContainerID = @ContainerID
13 авг 09, 13:47    [7533360]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с timestamp  [new]
Glory
Member

Откуда:
Сообщений: 104760
strizzz
необходимо вставить выборку с временной меткой


timestamp - это вовсе не "временная метка"
И вы не можете добавлять туда значения
13 авг 09, 13:52    [7533405]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с timestamp  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
А с чего Вы взяли, что timestamp - это временная метка?!
13 авг 09, 13:54    [7533425]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с timestamp  [new]
strizzz
Member

Откуда: SPb
Сообщений: 737
pkarklin, Glory

не правильно сформулировал, по-русски как сказать даже не знаю)
13 авг 09, 13:56    [7533443]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с timestamp  [new]
Glory
Member

Откуда:
Сообщений: 104760
strizzz
pkarklin, Glory

не правильно сформулировал, по-русски как сказать даже не знаю)

Вы лучше сообщение об ошибке прочитайте. И о типе timestamp в хелпе
13 авг 09, 13:58    [7533459]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с timestamp  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
strizzz
выдает следующую ошибку:
Msg 273, Level 16, State 1, Line 17
Cannot insert an explicit value into a timestamp column. Use INSERT with a column list to exclude the timestamp column, or insert a DEFAULT into the timestamp column.
Какая конкретно фраза в этом сообщении непонятна? И почему?
13 авг 09, 13:58    [7533460]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с timestamp  [new]
strizzz
Member

Откуда: SPb
Сообщений: 737
если Use INSERT with a column list to exclude the timestamp column, то

Insert Error: Column name or number of supplied values does not match table definition.

если or insert a DEFAULT into the timestamp column, то какое значение у Timestamp по умолчанию?

Пробовал Getdate(), выдаёт:

Msg 1755, Level 16, State 0, Procedure InsertTemplateContainer, Line 101
Defaults cannot be created on columns of data type timestamp. Table '#TempContainerHistory', column 'Timestamp'.
Msg 1750, Level 16, State 0, Procedure InsertTemplateContainer, Line 101
Could not create constraint. See previous errors.
13 авг 09, 14:23    [7533638]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с timestamp  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
timestamp - это специальный двоичный тип данных, никакого отношения ко времени не имеющий. У него есть ещё синоним - rowversion.
Читайте BOL - там всё про него написано.
13 авг 09, 14:25    [7533658]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с timestamp  [new]
Glory
Member

Откуда:
Сообщений: 104760
strizzz
если Use INSERT with a column list to exclude the timestamp column, то

Insert Error: Column name or number of supplied values does not match table definition.


Неправильно значит сделали to exclude the timestamp column из текста запроса


strizzz

если or insert a DEFAULT into the timestamp column, то какое значение у Timestamp по умолчанию?

Пробовал Getdate(), выдаёт:

Msg 1755, Level 16, State 0, Procedure InsertTemplateContainer, Line 101
Defaults cannot be created on columns of data type timestamp. Table '#TempContainerHistory', column 'Timestamp'.
Msg 1750, Level 16, State 0, Procedure InsertTemplateContainer, Line 101
Could not create constraint. See previous errors.

DEFAULT - это ключевое слово в части VALUES запроса INSERT, а не SELECT
И еще раз - timestamp не имеет никакого отношения к дате и времени
13 авг 09, 14:28    [7533683]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с timestamp  [new]
strizzz
Member

Откуда: SPb
Сообщений: 737
вообще всё выглядит следующим образом, и в принципе, в timestamp'е во временной таблице необходимости нет, но если я её убираю из временной таблице и из выборки, которую я в эту временную таблицу вставляю, то выдаёт:

Msg 213, Level 16, State 1, Procedure InsertTemplateContainer, Line 123
Insert Error: Column name or number of supplied values does not match table definition.

понятно, что когда я выборку из временной таблице вставляю в таблицу, в которой есть столбец [Timestamp] получается несоответствие.

мне бы хотелось, чтобы после вставки в таблицу данных из временной таблице timestap сгенирировал значение автоматически, а как это сделать не пойму.

create table #TempContainerHistory
(
ContainerID int,
ArrivalDate smalldatetime,
CurrentTerminalID int,
FallDate smalldatetime,
NumberRelease nvarchar(50),
ForwarderID int,
CurrencyCabotage nvarchar(7),
PriceCabotage float,
ComingTerminalID int,
Note nvarchar(50),
[Timestamp] timestamp,
Deleted bit
)

insert into #TempContainerHistory
exec
select
ContainerID,
ArrivalDate,
CurrentTerminalID,
FallDate,
NumberRelease,
ForwarderID,
CurrencyCabotage,
PriceCabotage,
ComingTerminalID,
Note,
[Timestamp],
Deleted
from
ContainerHistory
where
ContainerID = @ContainerID


insert into
ContainerHistory
select
*
from
#TempContainerHistory
13 авг 09, 14:45    [7533822]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с timestamp  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
непосредственно перечислить имена столбцов, исключив столбец timestamp.

для спящего время бодрствования равносильно сну
13 авг 09, 14:47    [7533841]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с timestamp  [new]
strizzz
Member

Откуда: SPb
Сообщений: 737
Алексей2003
непосредственно перечислить имена столбцов, исключив столбец timestamp.

для спящего время бодрствования равносильно сну


имеете в виду вместо:

insert into
ContainerHistory
select
*
from
#TempContainerHistory

так сделать:

insert into
ContainerHistory
select
ContainerID,
ArrivalDate,
CurrentTerminalID,
FallDate,
NumberRelease,
ForwarderID,
CurrencyCabotage,
PriceCabotage,
ComingTerminalID,
Note,
Deleted
from
#TempContainerHistory

???

если да, то какая разница, в ContainerHistory то [Timestamp] всё равно есть, естественно выдаёт ошибку:

Msg 273, Level 16, State 1, Procedure InsertTemplateContainer, Line 117
Cannot insert an explicit value into a timestamp column. Use INSERT with a column list to exclude the timestamp column, or insert a DEFAULT into the timestamp column.
13 авг 09, 14:55    [7533892]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с timestamp  [new]
Glory
Member

Откуда:
Сообщений: 104760
strizzz
вообще всё выглядит следующим образом, и в принципе, в timestamp'е во временной таблице необходимости нет, но если я её убираю из временной таблице и из выборки, которую я в эту временную таблицу вставляю, то выдаёт:

Msg 213, Level 16, State 1, Procedure InsertTemplateContainer, Line 123
Insert Error: Column name or number of supplied values does not match table definition.

Эта ошибка говорит о том, что вы неправильно убрали поле. Проверяйте
13 авг 09, 14:55    [7533897]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с timestamp  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
strizzz,

вы когда начнете читать документацию?
13 авг 09, 14:56    [7533900]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с timestamp  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
strizzz
Алексей2003
непосредственно перечислить имена столбцов, исключив столбец timestamp.

для спящего время бодрствования равносильно сну


имеете в виду вместо:

insert into
ContainerHistory
select
*
from
#TempContainerHistory

так сделать:

insert into
ContainerHistory
select
ContainerID,
ArrivalDate,
CurrentTerminalID,
FallDate,
NumberRelease,
ForwarderID,
CurrencyCabotage,
PriceCabotage,
ComingTerminalID,
Note,
Deleted
from
#TempContainerHistory

???

если да, то какая разница, в ContainerHistory то [Timestamp] всё равно есть, естественно выдаёт ошибку:

Msg 273, Level 16, State 1, Procedure InsertTemplateContainer, Line 117
Cannot insert an explicit value into a timestamp column. Use INSERT with a column list to exclude the timestamp column, or insert a DEFAULT into the timestamp column.

имею ввиду
insert into ContainerHistory (col1, col2... ) select blablabla from #TempContainerHistory
в этом запросе нигде не должно фигугировать колонка с timestamp.
13 авг 09, 14:57    [7533918]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с timestamp  [new]
strizzz
Member

Откуда: SPb
Сообщений: 737
Алексей2003,

Спасибо большое!
13 авг 09, 15:09    [7534013]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить