2017-04-04 199 views
0

我有table1table2,我根據表1 + 2中的行將數據插入到table3。我需要在數據插入時獲得證據。Insert into SQL Server timestamp

表1

Column1 
a 
b 
d 
e 
g 
h 
i 

表2

Column1 
a 
b 
c 
d 
e 
f 

代碼:

INSERT INTO [dbo].[table3](column1) 
    SELECT column1 
    FROM [dbo].[table2] 
    WHERE NOT EXISTS (SELECT 
         FROM [dbo].[table1] 
         WHERE column1 = column1); 

結果:

表3

Column1 Column2 
c 
f 

我需要獲得存在表和列存在(varchar(50)timestamp),它會告訴我的時間是使用我當前的腳本在表插入值時的任意時間格式。

例子:

表3

Column1 Column2 
c  4/4/2017 
f  4/4/2017 

幾天後應該表是這樣的:

表3

Column1 Column2 
c  4/4/2017 
f  4/4/2017 
x  5/4/2017 
y  6/4/2017 
z  10/4/2019 

謝謝爲提升我的腳本:

是這樣的:由ALTER TABLE TABLE3 ADD COLUMN updated Datetime2 DEFAULT GETDATE()

INSERT INTO table3 (Column2) 
VALUES (CURRENT_TIMESTAMP); 
+3

請勿日期時間信息存儲EVER在VARCHAR列。這是一個可怕的想法。我們有這種類型信息的日期時間數據類型。忘記TIMESTAMP吧,它與時間或日期無關。對於手頭的問題,您可以使用默認的getdate()向datetime列添加非空約束,或者在insert語句中使用getdate()提供當前時間。 –

回答

3

只是ADD多一個列到表3而只是做刀片,你做了什麼,每次插入新行到表3中,最後一個字段updated將填入當前的日期和時間。

0

添加一些審計列表像下面


[StatusCode] [varchar](1) NOT NULL, 
[CreatedDate] [datetime] NOT NULL CONSTRAINT [DF_ConstraintName_CreatedDate] DEFAULT (getdate()), 
[LastModifiedByUserId] [int] NULL , 
[LastModifiedDate] [datetime] NULL,