【发布时间】:2021-06-06 10:35:31
【问题描述】:
我想将以下脚本(SQL SERVER)转换为 Oracle:
ALTER TABLE [dbo].[TDistribucion] WITH CHECK ADD CONSTRAINT [FK_TDistribucion_TDocumentos] FOREIGN KEY([Id_Documento])
REFERENCES [dbo].[TDocumentos] ([Id])
GO
ALTER TABLE [dbo].[TDistribucion] CHECK CONSTRAINT [FK_TDistribucion_TDocumentos]
GO
我尝试在 Oracle 中运行相同的脚本:
ALTER TABLE TDISTRIBUCION WITH CHECK ADD CONSTRAINT FK_TDistribucion_TDocumentos FOREIGN KEY(ID_DOCUMENTO)
REFERENCES TDOCUMENTOS (ID);
ALTER TABLE TDISTRIBUCION CHECK CONSTRAINT FK_TDistribucion_TDocumentos;
我得到了这个错误:
Error starting at line : 3 in command -
ALTER TABLE TDISTRIBUCION WITH CHECK ADD CONSTRAINT FK_TDistribucion_TDocumentos FOREIGN KEY(ID_DOCUMENTO)
REFERENCES TDOCUMENTOS (ID)
Error report -
SQL Error: ORA-01735: invalid ALTER TABLE option
01735. 00000 - "invalid ALTER TABLE option"
*Cause:
*Action:
我相信“WITH CHECK ADD”是问题所在!
【问题讨论】:
-
没有
WITH CHECK ADD。ADD CONSTRAINT添加一个约束。WITH CHECK告诉服务器根据新约束检查任何现有数据 -
“WITH CHECK”有什么替代品吗?
-
在约束名称之后添加ENABLE VALIDATE。顺便说一句,如果您想在数据库之间转换查询,您必须了解两者。您不能只运行脚本并期望它们工作
-
不工作!不幸的是,我对 Oracle 有基本的了解。
-
什么不起作用?你尝试了什么?
I have basic knowledge of Oracle.和 SQL Server。同样,除非您确实了解它们的作用,否则您无法迁移 SQL 脚本。这包括实际阅读文档。否则,您可能会造成严重损害并创建一个行为与原始数据库不同的数据库,不会执行相同的检查。或者您可能正在尝试转换不必要的语句。如果数据库为空,则根本不需要验证现有数据
标签: sql sql-server oracle database-migration