问题标签 [constraints]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - MySQL术语“约束”与“外键”的区别?
我在这里查看 MySQL 文档并试图理清 FOREIGN KEYs 和 CONSTRAINTs 之间的区别。我认为 FK是一种约束,但文档似乎在谈论它们,就像它们是独立的东西一样。
创建 FK 的语法是(部分)...
所以“CONSTRAINT”子句是可选的。为什么要包含它或不包含它?如果你忽略它,MySQL会创建一个外键而不是一个约束吗?或者它更像是“CONSTRAINT”只不过是你的 FK 的名称,所以如果你不指定它,你会得到一个匿名的 FK?
任何澄清将不胜感激。
谢谢,
伊森
mysql - MySQL -- create two indexes, only one appears in SHOW CREATE TABLE output
In have a many-to-many linking table and I'm trying to set up two foreign keys on it. I run these two statements:
I would expect that when I run SHOW CREATE TABLE address_list_memberships
I'd see this:
But instead I get this:
It looks as though only one index is there. Seems to contradict the MySQL docs which say MySQL automatically creates an index on the referencing column whenever you create a foreign key.
I've noticed this only-one-index thing every time I create two FKs on a table whether I use a GUI tool such as CocoaMySQL or SQLyog, or whether I do it on the command line.
Any illumination of this mystery would be very much appreciated.
database - 如何从 Informix 中的名称获取约束详细信息?
在编写大型事务(大量插入、删除、更新)并因此违反 Informix(v10,但也应适用于其他版本)中的约束时,我收到一条不太有用的消息,例如,我违反了约束 r190_710。我怎样才能找出哪些表和键被某个约束所覆盖,我只知道它的名称?
sql-server - SQL Server 事务复制和不同的主键
使用 SQL Server 2005 和事务复制,我可以删除订阅者的主键约束,同时保留发布者的主键约束吗?
主要我想这样做是因为我想聚集在与现有聚集约束不同的列上。我不认为我可以在不首先删除它的情况下将约束从集群转换为非集群,并且复制已经发生。
mysql - MySQL中的两列主键
我有一个非常简单的问题和一个可行的解决方案,但我正在寻找一个更简单的解决方案。
当多个值等于现有值时,我想防止将行添加到数据库中。例如,如果 a2=a1 AND b2=b1 则数据将被拒绝。如果仅 a2=a1 或仅 b2=b1 则允许。基本上我希望它像一个需要两个值匹配的主键。
我知道我可以在写入数据库之前通过验证来做到这一点——例如。选择 * where a='a2' and b='b2' 然后在我得到结果时避免写入新数据。我宁愿做的是启用一个 MySQL 设置,比如主键,它会自动阻止这样的数据。
除了基本功能之外,我对 MySQL 不是很熟悉,所以如果这很简单,我很抱歉。谷歌搜索围绕唯一索引和主键的各种事情并没有帮助。
sql - 我可以在 SQL Server 中删除之前检查约束吗?
我有以下情况。一个主表和许多其他表通过外键链接在一起。现在,当我想删除主表中的一行时,会发生 ConstraintsViolation,这是有意且好的。
现在我希望能够在触发删除行事件之前检查 ConstraintsViolation 是否会发生。
这可能吗?
sql - 使用外键向数据库添加新项目时,是否应该使用 SQL 触发器在其他表中创建相关行?
我正在使用 SQL 2005 实现具有车辆表、车辆发动机和车辆齿轮表的数据库设计。
每个表都有一个 ID,它是一个 SQL 标识号,每个引擎和齿轮都与车辆 ID 有关系。因此,在我创建车辆之前,我必须创建引擎和齿轮。
创建引擎和齿轮时如何知道车辆识别号?由于发动机和齿轮表的外键约束,尚未创建车辆行?
我是否应该实施一个自动触发器,在创建车辆时为连接到车辆的发动机和齿轮创建一个空行?但是我又怎么知道车辆ID呢?
sql - 有没有办法避免使用约束或触发器在特定表上删除行?
有没有办法避免使用约束在特定表上删除行?
如果 id 为 0,1 或 2,我想(例如)拒绝删除行
这是为了避免用户删除应用程序的主帐户,即使有人直接使用 sql 尝试(错误地),我也想避免它。
谢谢!
编辑:
这个问题的整个想法是不要触及应用程序。这不是安全问题,我只需要知道是否可以使用约束或 SQL Server 具有的任何其他东西来做我所要求的事情(它不需要是标准的数据库解决方案)。
编辑2:
代码示例非常非常感谢:D
php - 如果我总是用 PHP 控制我的数据库输入,那么像 NOT NULL 和 FOREIGN KEY 这样的约束有多重要?
我正在尝试在作为外键的表中创建一个列,但在 MySQL 中这比它应该的要困难。这将需要我返回并对已使用的表进行某些更改。所以我想知道,MySQL 是否有必要确保某个值是合适的?难道我不能只用像 PHP 这样的语言来做到这一点吗,无论如何我都用它来访问这个数据库?
与 NOT NULL 类似。如果我只用 PHP 访问这个数据库,我不能简单地让 PHP 确保没有输入空值吗?
为什么我应该使用 MySQL 来强制执行这些约束,而我可以使用 PHP 来做到这一点?
由于上述原因,我意识到 NOT NULL 是一个非常愚蠢的部分。但是 MySQL 不会强制执行外键,除非有严重程度的胡闹。
在您看来,使用“假”外键并简单地检查要输入的值是否在其他表中与 PHP 匹配是否仍然很糟糕?
oracle - 通过 ODBC 访问 - Oracle DEFAULT 不起作用
我们通过 ODBC 使用 MS Access 作为 Oracle 表的前端,它运行良好。但是我们正在尝试在 Oracle 表中使用 DEFAULT 约束。当我们在 Access 中打开链接表时,我们可以看到现有数据,但是当我们尝试添加一行时,没有在具有 Oracle DEFAULT 的列中键入任何值(期望使用默认值),我们会看到 #在每一列中删除,并且该行不会添加到表中。有任何想法吗?如果有帮助,我可以提供更多详细信息,请告诉我。