如何将检查约束从SQL Server转换为Oracle
我必须转换以下sql server约束:如何将检查约束从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]
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。我可能会犯错误,但为了检查,我可以执行两个语法