Sql-Server

INSERT INTO.. 使用預設關鍵字選擇

  • July 22, 2022

找不到與我遇到的這個問題相關的任何內容,Google似乎只返回如何使用 INSERT INTO.. VALUES 的預設關鍵字。

我有一個包含以下列的表格:

RecordBookID 有一個預設約束,它使用 newid() 作為預設值

我可以執行以下預期結果:

insert into GoodsIn_Record_Books (RecordBookID, ShopID, Created, Expires)
values (default, 201, '2022-07-22 11:24:00.000', '2022-12-31 23:59:00.000')

但是我想插入另一個表中的數據,如下所示:

insert into GoodsIn_Record_Books (RecordBookID, ShopID, Created, Expires)
select default, ShopID, '2022-07-22 11:24:00.000', '2022-12-31 23:59:00.000' from System_Shops

其中 default 關鍵字使用 RecordBookID 的預設值

System_Shops 表:

希望這是有道理的,首先在這裡發帖,如果有任何錯誤,請致歉。

乾杯

“您是否嘗試過從 INSERT…SELECT 中完全省略 RecordBookID?我希望它使用預設約束值。” -@丹古茲曼

insert into GoodsIn_Record_Books (ShopID, Created, Expires)
select ShopID, '2022-07-22 11:24:00.000', '2022-12-31 23:59:00.000'
from System_Shops

如果您未在 insert 和 values 語句中指定列,則預設情況下將添加預設值。

CREATE TABLE #tmp
(RecordBookID UNIQUEIDENTIFIER CONSTRAINT DF_tmp DEFAULT NEWID(),
ShopID       INT,
Created      DATETIME,
Expires      DATETIME
);

INSERT INTO #tmp(ShopID, Created, Expires)
VALUES(201, '2022-07-22 11:24:00.000', '2022-12-31 23:59:00.000');

select * from #tmp;

要插入僅填充預設值的行,可以這樣做:

INSERT INTO #tmp
DEFAULT VALUES;

引用自:https://dba.stackexchange.com/questions/314730