Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将检查约束从SQL Server转换为Oracle_Oracle_Ddl_Check Constraints - Fatal编程技术网

如何将检查约束从SQL Server转换为Oracle

如何将检查约束从SQL Server转换为Oracle,oracle,ddl,check-constraints,Oracle,Ddl,Check Constraints,我必须转换以下sql server约束: ALTER TABLE [dbo].[tblLocal_FDIMP_SRCDESCFTP] WITH CHECK ADD CONSTRAINT [fmtfile_chk] CHECK ( ( (1) = case when [file_type]='LBC' AND [fmtfile]='ZIP' then (1) when ([file_type]='AE' OR [file_type]

我必须转换以下sql server约束:

ALTER TABLE [dbo].[tblLocal_FDIMP_SRCDESCFTP]  WITH CHECK ADD  CONSTRAINT [fmtfile_chk] CHECK  (
   (  (1) = case 
            when [file_type]='LBC' AND [fmtfile]='ZIP' then (1) 
            when ([file_type]='AE' OR [file_type]='TS') AND ([fmtfile] IS NULL OR upper([fmtfile])='ZIP') then (1) 
            else (0) end
))GO
转换为Oracle语法的等效约束是什么

谢谢

为什么人们使用1=CASE表示条件

ALTER TABLE tblLocal_FDIMP_SRCDESCFTP 
ADD  CONSTRAINT fmtfile_chk CHECK  ((file_type='LBC' AND fmtfile='ZIP') 
                                OR ((file_type='AE' OR file_type='TS') AND (fmtfile IS NULL OR UPPER(fmtfile)='ZIP')));
为什么人们使用1=案例表示条件

ALTER TABLE tblLocal_FDIMP_SRCDESCFTP 
ADD  CONSTRAINT fmtfile_chk CHECK  ((file_type='LBC' AND fmtfile='ZIP') 
                                OR ((file_type='AE' OR file_type='TS') AND (fmtfile IS NULL OR UPPER(fmtfile)='ZIP')));

为什么人们使用1=案例表示条件?嗯,因为它更像计算机科学?@LuisCazeres。只有在不支持正确布尔类型的数据库中才需要。为什么数据库不支持布尔类型?@GordonLinoff我从来没有见过这样的地方。我只看到它阻止了查询的可搜索性。为什么人们对条件使用1=CASE?嗯,因为它更像计算机科学?@LuisCazeres。只有在不支持正确布尔类型的数据库中才需要。为什么数据库不支持布尔类型?@GordonLinoff我从来没有见过这样的地方。我只看到它阻止了查询的可搜索性。这不是SQL Server约束,这只是难看的代码。一个简单的布尔条件就可以了。路易斯表示,只要删除所有案例。。。当和与1的比较将留下一个简单的布尔表达式时,我刚刚意识到fmtfile只能是ZIP或NULL。胡说八道。@Stefano。我不明白为什么这在Oracle中不起作用,尽管我不会在任何数据库中这样编写。@GordonLinoff我不知道上面的代码在Oracle中是否起作用。但是在谷歌上阅读,关于语法,我在甲骨文中似乎不习惯这样的1=case ecc。我可能会犯一个错误,但为了检查,我可以执行两个语法。这不是SQL Server约束,这只是难看的代码。一个简单的布尔条件就可以了。路易斯表示,只要删除所有案例。。。当和与1的比较将留下一个简单的布尔表达式时,我刚刚意识到fmtfile只能是ZIP或NULL。胡说八道。@Stefano。我不明白为什么这在Oracle中不起作用,尽管我不会在任何数据库中这样编写。@GordonLinoff我不知道上面的代码在Oracle中是否起作用。但是在谷歌上阅读,关于语法,我在甲骨文中似乎不习惯这样的1=case ecc。我可能会犯错误,但为了检查,我可以执行两个语法