有没有人设法检查Eclipse Papyrus中建模的类图上的OCL约束?我已经定义了一个简单的测试配置文件,只对一个构造型属性有一个约束:
{OCL} self.property > 0
Run Code Online (Sandbox Code Playgroud)
构造型扩展了Property元类,因此我将它应用于类属性,并将构造型的属性设置为0.但是我从未在上下文菜单中使用Validation> Validate Model命令出错.
任何帮助都会非常感激.
谢谢你提前.
我有以下表Goods_In_Wagon(Goods_ID,Wagon_ID,Total_Weight).我需要创建一些if语句检查约束
"如果WAGON_ID介于90和99之间,则Total_Weight必须大于10." AND"如果WAGON_ID介于100和110之间那么Total_Weight必须大于20." AND"如果WAGON_ID介于111和120之间那么Total_Weight必须大于30."
这在SQL Oracle中是否可行,如果它是如何实现它的话
create table test (
col1 varchar(20),
col2 varchar(20)
)
Run Code Online (Sandbox Code Playgroud)
有没有办法根据特定列的值编写检查约束?
我创建了一个名为Project的表,其中有两列ProjectID和StartDate.我想创建一个约束,以确保所包含的日期始终等于今天或未来日期.
我已经尝试了下面的代码,但得到了一个缺少表达式错误.仅在创建表后添加约束.
CREATE TABLE PROJECT
(ProjectID NUMBER(7),
StartDate date NOT NULL,
CONSTRAINT PK_PROJECTID PRIMARY KEY (ProjectID)
);
ALTER TABLE PROJECT
ADD CONSTRAINT PROJECT_Check_StartDate CHECK(StartDate => Current_date);
Run Code Online (Sandbox Code Playgroud) 我遇到了问题!
我已经使用MySQL设置了我的第一个检查约束,但不幸的是我遇到了问题.插入应该使测试失败的行时,无论如何都要插入行.
结构:
CREATE TABLE user (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
uname VARCHAR(10) NOT NULL,
fname VARCHAR(50) NOT NULL,
lname VARCHAR(50) NOT NULL,
mail VARCHAR(50) NOT NULL,
PRIMARY KEY (id),
CHECK (LENGTH(fname) > 30)
);
Run Code Online (Sandbox Code Playgroud)
插入声明:
INSERT INTO user VALUES (null, 'user', 'Fname', 'Lname', 'mail@me.now');
Run Code Online (Sandbox Code Playgroud)
fname列中字符串的长度应该太短,但无论如何都要插入.
我很确定我错过了一些基本的东西.
我有以下T-SQL架构.我遇到的问题是Download表上的检查约束不起作用.我仍然可以将记录插入到包含该表NULL的两个值ProductId和CategoryId.为什么会这样?
我希望两个ProductId和CategoryId列都允许NULL值,但对于任何给定的记录,只允许其中一个设置为NULL,另一个需要是Category或Product表的相应Id .
CREATE TABLE Category (
Id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
Description nvarchar(100) NULL,
ParentCategoryId int NULL
CONSTRAINT fk_CategoryId_CategoryId FOREIGN KEY (Id) REFERENCES Category(Id)
)
GO
CREATE TABLE Product (
Id int IDENTITY(1,1) NOT NULL PRIMARY KEY,
Title nvarchar(100) NOT NULL,
TagLine nvarchar(MAX) NOT NULL,
Description nvarchar(MAX)NULL,
CategoryId int NOT NULL,
ImageUrl nvarchar(255) NULL,
Keywords nvarchar(200) NOT …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建以下检查约束.
(
[Href] IS NOT NULL AND
[ETag] IS NOT NULL AND
[UserName] IS NOT NULL AND
[Password] IS NOT NULL AND
[UID] IS NOT NULL
)
OR
(
[Href] IS NULL AND
[ETag] IS NULL AND
[UserName] IS NULL AND
[Password] IS NULL AND
[UID] IS NULL
)
Run Code Online (Sandbox Code Playgroud)
我可以保存它并且没有错误.但SSMS删除了两个内括号(这样在开始处只有左括号,在结尾处只有右括号).
这似乎完全改变了意义.我希望所有这些列都为null或者它们都不为null.有没有理由说SQL Server无法处理这个?
我有以下专栏
EffectiveDate Date NOT NULL default getDate(),
CONSTRAINT chk_EffectiveDate CHECK (EffectiveDate >= getDate() AND EffectiveDate <= TerminationDate ) ,
TerminationDate Date NOT NULL default '12/31/9999',
CONSTRAINT chk_TerminationDate CHECK (TerminationDate > getDate() AND TerminationDate >= EffectiveDate),
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,如果我没有在那些列中输入值,它会抛出checkconstraint错误,它不接受默认值
我想要实现的是什么?
电话号码的约束为7位数.如何检查它是否是SQL Server中的7位数?
CREATE TABLE Customer
(
C_ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
C_Name VARCHAR(255) NOT NULL,
Phone INT
);
Run Code Online (Sandbox Code Playgroud) 这个问题是检查约束SQL中的一个新IF.我想做类似于以下检查的事情(抛出ORA-00936: missing expression异常):
ALTER TABLE t_table
ADD CONSTRAINT chk_unique_active CHECK
(
( tb_active = 0 ) OR
( tb_active = -1 AND UNIQUE(tb_active, tb_img, tb_objid))
);
Run Code Online (Sandbox Code Playgroud)
目标是确保(在DBMS级别)只有一个具有相同objid的行是活动的,尽管可以复制非活动行(行的历史视图).
它可以在触发器中完成,但在INSERT问题之前使用UNIQUE约束与检查中所解释的检查似乎更好.
这可能吗?
sql ×4
oracle ×3
sql-server ×3
constraints ×1
mysql ×1
ocl ×1
papyrus ×1
postgresql ×1
t-sql ×1
uml ×1