SQL Server:检查列有其他列的成员,但没有其他列的成员
主题/标题不是那么直观,我只需要举个例子 假设我们有一个名为SQL Server:检查列有其他列的成员,但没有其他列的成员,sql,sql-server,Sql,Sql Server,主题/标题不是那么直观,我只需要举个例子 假设我们有一个名为ARTICLE的表,如下所示: ARTICLE (idArticle, IdConference, IdMagazine, DateSent, Title, Sector); 问题:插入一个约束,使idArticle只有一个IdConference或只有一个IdMagazine——但决不能两者都有 我马上就知道会是这样: Alter table Article add constraint checkidArt check( ) 但
ARTICLE
的表,如下所示:
ARTICLE (idArticle, IdConference, IdMagazine, DateSent, Title, Sector);
问题:插入一个约束,使idArticle
只有一个IdConference
或只有一个IdMagazine
——但决不能两者都有
我马上就知道会是这样:
Alter table Article
add constraint checkidArt check( )
但是我不知道如何指定列
IdArticle
应该只有IdConference
或者只有IdMagazine
值。如果您使用的是MySQL
,那么就不可能添加约束,因为MySQL不支持CHECK
约束。文件:
CHECK子句已解析,但被所有存储引擎忽略
因此,您唯一的选择是使用带有
信号SQLSTATE
和消息文本的触发器来标记错误。如果您使用的是MySQL
,那么就不可能添加约束,因为MySQL不支持CHECK
约束。文件:
CHECK子句已解析,但被所有存储引擎忽略
因此,您唯一的选择是使用带有信号SQLSTATE
和消息文本的触发器来标记错误。假设它是SQL Server,因为MySQL没有检查约束:
ALTER TABLE Article
ADD CONSTRAINT checkidArt CHECK (IdConference IS NULL OR IdMagazine IS NULL)
假设是SQL Server,因为MySQL没有检查约束:
ALTER TABLE Article
ADD CONSTRAINT checkidArt CHECK (IdConference IS NULL OR IdMagazine IS NULL)
mysql或(MS)SQL Server?不要标记未涉及的产品。mysql或(MS)SQL Server?不要标记未涉及的产品。我正在使用sqlserver..microsoft SQL Server..Sorry在哪种情况下@Nenad的答案将帮助您。我正在使用sqlserver..microsoft SQL Server..Sorry在哪种情况下@Nenad的答案将帮助您…非常简单,当然,在看到解决方案之后…啊哈…太简单了,当然,在看到解决方案之后…啊哈