我使用的是SQL。我有一个带有整数列column1的表名测试。
我想将数据插入到column1中,直到记录总数达到100。如果总和大于100,则SQL查询不应插入记录。
这意味着,在执行insert语句之前,SQL查询应该检查可用数据的总和。如果数据小于100,则将插入。否则,它将不会插入。
谢谢。
发布于 2014-08-19 15:26:17
您可以将以下存储过程用于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发布于 2014-08-19 16:47:25
在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)注意:使用此解决方案,您将不必编写任何存储过程。
发布于 2014-08-20 11:55:02
我正在使用存储过程在我的表中插入数据。
insert into FundTransfer_Log values (@id,@data);此语句是一个循环,用于检查表中的所有数据(表包含200多条记录)。首先,上面的insert语句对@data的总数求和,以检查它是否小于100。如果它返回小于100,那么它将插入具有id的所有记录,否则它将不会插入。
https://stackoverflow.com/questions/25376877
复制相似问题