我有一个名为NumberInStock的列。但是,在数据库中,我想限制可以在1到100之间输入到此列中的值。我将在该列上使用哪些约束条件,并且会是SQL查询的正确语法?我走到这一步是:列的SQL约束条件
ALTER TABLE Inventory
ALTER COLUMN NumberInStock
现在应该做些什么之后摆放的约束,我会用什么约束
我使用MySQL,有一个1999年的ANSI/ISO标准。
我有一个名为NumberInStock的列。但是,在数据库中,我想限制可以在1到100之间输入到此列中的值。我将在该列上使用哪些约束条件,并且会是SQL查询的正确语法?我走到这一步是:列的SQL约束条件
ALTER TABLE Inventory
ALTER COLUMN NumberInStock
现在应该做些什么之后摆放的约束,我会用什么约束
我使用MySQL,有一个1999年的ANSI/ISO标准。
通常这类型的问题,应使用CHECK约束如下 -
ALTER TABLE Inventory ADD CONSTRAINT chk1 CHECK(NumberInStock BETWEEN 1 AND 100);
解决这本来在已经完成ORACLE但MySQL的有BUG reported有关检查约束的执行。
因此ü必须实现两个触发器即,一个用于INSERT,另一个用于该表UPDATE。
非常感谢!我知道MySQL很奇怪,但我意识到这是因为我正在使用针对Oracle的查询,而我从来没有意识到MySQL的语法会有所不同。 – Domecraft
您可以简单地将MySQL看作是具有减少的ORACLE功能的DBMS。毕竟它在许多企业应用程序中被广泛使用,并且ORACLE和MySQL都来自ORACLE公司。 –
使用检查约束。
ALTER TABLE <TABLE NAME>
ADD CONSTRAINT <CONSTRAINT NAME> CHECK(<PREDICATE> OR/AND/NOT <PREDICATE> ...)
谢谢你的回答。我试图在网上查找它,但我无法找到任何有关它。 – Domecraft
在MySQL中,为解析语法正确性而解析了“CHECK”约束,然后**忽略**。不会检查价值! –
你必须告诉我们你正在使用哪个DBMS。 –
刚刚添加什么DBMS我使用的职位 – Domecraft
MySQL不**支持检查约束。即使它会接受来自接受问题的SQL,它会默默**忽略它! –