您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

仅当总数小于阈值时,才将行插入到SQL Server表中

仅当总数小于阈值时,才将行插入到SQL Server表中

您可以创建一个SELECT来检查用户数并检索新用户的数据,然后使用该选择将其插入表中:

INSERT INTO users (
  name, email, [password]
)
SELECT
  'newUser' AS name
  , 'email@example.com' AS email
  , 'fsfsfs' AS [password]
FROM
  users
HAVING
  COUNT(*) < 100000;

SELECT数据库中的用户数少于100000时,该语句将返回一行;如果用户数为100000或更多,则该语句将返回0记录。

整个语句(INSERT..SELECT)在每种情况下均有效,但是当该SELECT部分返回0行时,INSERT将不会插入任何内容

通过SERIALIZABLE事务级别,可以确保并发写入不会互相干扰。COUNT(*)使用最有效的索引/键对行进行计数,这意味着锁定时间将最短。

由于整个动作是在一个语句中完成的,因此可以防止在SELECT和的执行之间插入INSERT

SQL Fiddle演示

SQLServer 2022/1/1 18:43:00 有605人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶