我正在使用SQL。 我有一个表名[TEST]和一个整数列[column1]。
我想将数据插入[column1],直到记录达到100的总和。 如果总和超过100,则SQL查询不应插入记录。
这意味着,在执行insert语句之前,SQL查询应该检查可用数据的总和。如果数据小于100,则会插入。否则,它不会插入。
感谢。
答案 0 :(得分:2)
您可以对insert语句使用以下存储过程:
CREATE PROCEDURE spInsertData
(
@value INT
)
AS
BEGIN
DECLARE @total INT
SET @total = ISNULL((SELECT SUM([columnName]) FROM [tableName]),0)
IF (@total + @value) <= 100
BEGIN
INSERT INTO [tableName] VALUES (@value)
END
END
答案 1 :(得分:0)
在oracle DB中测试,应该在msql或任何其他数据库中工作
Case
语句语法可能会有所不同!但一般的逻辑相同
INSERT INTO TEST (COLUMN1)
SELECT [COULMN1 VALUE HERE] FROM DUAL
/*The condition that will check if inserting allowed or not*/
WHERE
1 = (SELECT CASE WHEN SUM(column1) + [COULMN1 VALUE HERE] >= 100 THEN 0 ELSE 1 END FROM TEST)
注意:使用此解决方案,您将无需编写任何存储过程。
答案 2 :(得分:0)
我正在使用存储过程在我的表中插入数据..
insert into FundTransfer_Log values (@id,@data);
此语句是一个循环,用于检查表中的所有数据(表包含200多条记录)。 首先,上面的insert语句对@data的总和进行求和以检查它是否小于100.如果它返回小于100,那么它将插入所有带有id的记录,否则它将不会插入。