我有一个数据库升级脚本来删除列上的非null约束。我想进行前提条件检查,并且仅当它为非null时才调用ALTER TABLE
。
master.xml脚本是一种渐进式脚本,在该脚本中,我不断添加脚本,并且每次都会运行整个脚本。第一次运行我的Alter Table脚本后,我不想再次运行它。
找不到为此的预定义前提条件,也无法编写sqlcheck。
最佳答案
可以使用sqlCheck完成。
mysqlt的
<preConditions onFail="MARK_RAN" onError="CONTINUE">
<sqlCheck expectedResult="NO">
SELECT is_Nullable
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name='<table_name>'
AND column_name='<column_name>'
</sqlCheck>
</preConditions>
<preConditions onFail="MARK_RAN" onError="CONTINUE">
<sqlCheck expectedResult="N">
SELECT Nullable
FROM user_tab_columns
WHERE table_name = '<table_name>'
AND column_name = '<column_name>'
</sqlCheck>
</preConditions>
<preConditions onFail="MARK_RAN" onError="CONTINUE">
<sqlCheck expectedResult="0">
SELECT is_nullable
FROM sys.columns
WHERE object_id = OBJECT_ID('<table_name>')
AND name = '<column_name>'
</sqlCheck>
</preConditions>