0
我想在表中添加100個存儲區。SQL Server:過程表不能插入值null
這是我的程序:
CREATE PROCEDURE [add100*sTORAGE]
AS
DECLARE @i int, @start DATETIME, @end DATETIME
SET @start = GETDATE()
SET @i = 1
WHILE @i < 101
BEGIN
INSERT INTO Storage(storage_name)
VALUES (CONCAT('Nume', CONVERT(nvarchar, @i)))
SET @i = @i +1
END
SET @end = GETDATE()
DECLARE @testID INT = (SELECT TOP 1 (TestRunID)
FROM TestRuns
ORDER BY TestRunID DESC)
DECLARE @tableID INT = (SELECT tableID
FROM Tables
WHERE Name = 'Storage')
INSERT INTO TestRunTables (TestRunID, TableID, StartAt, EndAt)
VALUES (@testID, @tableID, @start, @end)
GO
我執行後得到一個錯誤:
消息515,級別16,狀態2,過程add100 *存儲,13號線
無法插入值'NULL'到列'TestRunID',表'OnlineShop.dbo.TestRunTables';列不允許有空值。 INSERT失敗。
當我查看錶格時,它已創建了99列。
我有關係的一些空表,這是它的刀片(也許這裏是原因):
--INSERTS--
-- insert views into "Views"
INSERT INTO Views(Name) VALUES ('View1')
INSERT INTO Views(Name) VALUES ('View2')
INSERT INTO Views(Name) VALUES ('View3')
select * from views
delete from views where ViewID>1
-- insert into "Tests"
INSERT INTO Tests(Name) VALUES ('[add100*Storage-runView1-del100*Storage]')
INSERT INTO Tests(Name) VALUES ('[add100*Product-runView2-del100*Product]')
INSERT INTO Tests(Name) VALUES ('[add100*OrderProduct-runView3- del100*OrderProduct]')
SELECT * FROM Tests
--insert into tables
INSERT INTO Tables(Name) VALUES ('Table1')
INSERT INTO Tables(Name) VALUES ('Table2')
INSERT INTO Tables(Name) VALUES ('Table3')
SELECT * from Tables
-- insert into "testTable"
INSERT INTO TestTables(TestID, TableID, NoOfRows, Position) VALUES (1,1,100,1)
INSERT INTO TestTables(TestID, TableID, NoOfRows, Position) VALUES (3,2,100,1)
INSERT INTO TestTables(TestID, TableID, NoOfRows, Position) VALUES (2,3,100,1)
SELECT * FROM TestTables
-- insert into "testViews"
INSERT INTO TestViews(TestID,ViewID) VALUES (1,1)
INSERT INTO TestViews(TestID,ViewID) VALUES (3,2)
INSERT INTO TestViews(TestID,ViewID) VALUES (2,3)
SELECT * FROM TestViews
有什麼不對?謝謝。
TestRuns表中是否有任何數據?在運行這個'SELECT TOP 1(TestRunID)FROM TestRuns ORDER BY TestRunID DESC'時返回什麼值,它看起來TestRuns表中沒有行 –
不,我沒有任何數據。那麼解決方案就是介紹一些價值觀? – Nero
是的,它應該返回一些數據,或者在沒有行返回時將其默認爲某個值 –