Sql-Server
INSERT INTO.. 使用預設關鍵字選擇
找不到與我遇到的這個問題相關的任何內容,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;