如何让一张表只允许一行?

2024-01-20

我有一张我想要的桌子只有一项。因此,如果有人尝试插入另一行,则只有在有人删除了先前存在的行之后才允许插入另一行。

如何为这样的表设置规则?


A UNIQUE约束允许多行null值,因为两个null值不被认为是相同的。 (除非使用时NULLS NOT DISTINCT在 Postgres 15 中 https://stackoverflow.com/a/8289253/939860或稍后。)

类似的考虑适用于CHECK限制。他们允许表达式为true or null(只是不false)。再次,null值通过了检查。

要排除这种情况,请定义列NOT NULL。或者将其设为PRIMARY KEY由于 PK 列已定义NOT NULL自动地。看:

  • 为什么我可以在可为空的列上创建带有主键的表? https://stackoverflow.com/questions/20006374/why-can-i-create-a-table-with-primary-key-on-a-nullable-column/20006502#20006502

另外,只需使用boolean:

CREATE TABLE public.onerow (
   onerow_id bool PRIMARY KEY DEFAULT true
 , data text
 , CONSTRAINT onerow_uni CHECK (onerow_id)
);

The CHECK约束可以如此简单boolean柱子。仅有的true被允许。

你可能想要REVOKE https://www.postgresql.org/docs/current/sql-revoke.html(或不GRANT) the DELETE and TRUNCATE特权来自public(以及所有其他角色)以防止单行被删除。喜欢:

REVOKE DELETE, TRUNCATE ON public.onerow FROM public;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让一张表只允许一行? 的相关文章

随机推荐

  • Xcode - 单元测试 - 针对 iOS 12 进行编译,但模块的最低部署目标为 13

    我在运行单元测试时遇到问题 问题位于代码行下方 testable导入PROJECT NAME Error Compiling for iOS 12 1 but module PROJECT NAME has a minimum deploy
  • AndroidcameraSource.stop()导致应用程序冻结

    我正在使用 google Vision API 构建一个具有二维码扫描仪的应用程序 读取二维码后 我无法停止相机 流量是MainActivity gt QrActivity一旦二维码收到检测 应用程序应返回到主活动 如果我不打电话camer
  • 重新定义/隐藏局部变量有多糟糕?

    在将遗留项目升级到 VS2015 时 我注意到存在很多错误 例如在函数内部重新定义局部变量 void fun int count applesCount cout lt lt Apples cost lt lt count 1 25 for
  • Rails - 有两个父母的嵌套资源

    假设我有一个带有两个父模型的子模型 Event has many tickets Person has many tickets Ticket belongs to Event Ticket belongs to Person 路线已映射
  • SocketException:使用 UdpClient 打开端口时“访问被拒绝”

    我正在尝试开始侦听 Android 设备上的 UDP 端口之一 我正在使用 Xamarin Forms 并在物理 Android 手机上测试它 public void StartListening int port 13000 Listen
  • 手动更新 Carrierwave Uploader 安装的属性

    我无法在由 Carrierwave 上传程序安装的属性上使用 model update attribute SQL 语句不会接受该值并将 NULL 添加到占位符 如果我从模型类中删除 mount uploader 语句 它会正常工作 我正在
  • Angular ng-if="" 具有多个参数

    我正在尝试开始角度开发 在查看文档后 仍然存在一些问题 我怎样才能最好地写一个ng if有多个参数对应于 if a b or if a b 有可能的 span I m removed when the checkbox is uncheck
  • 等待所有的 Promise 在 Node.js 中用 Bluebird 完成

    在使用 bluebird 的 Node js 中等待所有 Promise 完成的最佳方法是什么 假设我想从数据库中选择记录并将它们存储在 redis 中 我想出了这个 loadActiveChannels function return K
  • 如何以编程方式获取父主题

    假设我在以下位置声明了以下自定义主题themes xml
  • 计算 HH:mm 格式的时差

    我有两个时间戳HH mm格式 我需要计算它们之间的差异 代表相同的时间间隔HH mm format JavaScript 有什么实用工具可以实现这一点吗 我尝试使用Date对象 但我找不到有用的东西 你能帮助我吗 您只需将两个日期相减即可
  • 将 ControlParameter 添加到 SqlDataSource 会阻止查询和数据绑定吗?

    我有一个 SqlDataSource 调用存储过程并且工作正常 如果我添加一个
  • 如何从片段中获取EditText

    我创建了AlerDialog AlertDialog Builder alert new AlertDialog Builder appContext alert setTitle Add subcontractors setView R
  • java赋值中可能存在逻辑错误的误解

    我在让这个项目正常工作方面遇到了很多问题 但我目前一直致力于让这个课程正常工作 它应该做的就是从无线电类中获取当前电台并将其传递给此类 问题是我试图在 AM 和 FM 之间进行选择 但每次运行它时 它只显示 AM 电台 我不明白为什么它会自
  • 每个RAILS_ENV运行多个delayed_job实例

    我正在开发一个具有多个 RAILS Env 的 Rails 应用程序 env name1 adapter mysql username root password host localhost database db name 1 env
  • Java 到 C# 的转换。如何在位图上绘制矩形?

    首先 我对 C 和 Java 都是菜鸟 因此 我被分配了将 java 小程序转换为 C 的任务 除了使用鼠标事件通过拖放在屏幕上绘制矩形之外 我还成功完成了所有操作 应该发生的情况是 当我单击鼠标并在屏幕上拖动鼠标时 应该会出现一个没有填充
  • 应用程序应该如何响应延迟的 SKPaymentTransaction?

    我的应用程序中有应用内购买 iOS 8 的新功能是 延迟 交易 部分描述见技术说明 https developer apple com library ios technotes tn2259 index html 我了解它的作用 并且我不
  • 让 Rails 2.3.x 忽略 i18n gem

    我有一个 Rails 2 3 5 项目 它使用 Rails 的本地化功能 我也碰巧安装了 Rails 3 beta 这取决于 i18n gem Rails 2 3 5 很乐意自行处理本地化 无需安装 i18n 但是如果 i18n gem 可
  • 如何根据物体位置旋转图像?

    首先 对帖子的长度表示抱歉 我正在开展一个根据叶子图像对植物进行分类的项目 为了减少数据的方差 我需要旋转图像 以便茎在图像底部水平对齐 270 度 到目前为止我在哪里 到目前为止 我所做的是创建一个阈值图像 然后从那里找到轮廓并在对象周围
  • 如何在预测数据上使用 Pandas get_dummies?

    使用熊猫后get dummies在 3 个分类列上获得一个热编码数据框 我训练了 取得了一些成功 感知器模型 现在我想根据新的观察来预测结果 它不是热编码的 有什么办法可以记录get dummies列映射要重新使用吗 据我所知 目前没有自动
  • 如何让一张表只允许一行?

    我有一张我想要的桌子只有一项 因此 如果有人尝试插入另一行 则只有在有人删除了先前存在的行之后才允许插入另一行 如何为这样的表设置规则 A UNIQUE约束允许多行null值 因为两个null值不被认为是相同的 除非使用时NULLS NOT