Skip to content

Commit 08fedf7

Browse files
rfscholtewumpz
authored andcommitted
Support Alter Table Drop Constraint If Exists (#709)
* Support Alter Table Drop Constraint If Exists * #709 add constraintIfExists flag
1 parent b3263c8 commit 08fedf7

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

src/main/java/net/sf/jsqlparser/statement/alter/AlterExpression.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public class AlterExpression {
4747
private String ukName;
4848
private Index index = null;
4949
private String constraintName;
50+
private boolean constraintIfExists;
5051
private boolean onDeleteRestrict;
5152
private boolean onDeleteSetNull;
5253
private boolean onDeleteCascade;
@@ -143,6 +144,14 @@ public String getConstraintName() {
143144
public void setConstraintName(final String constraintName) {
144145
this.constraintName = constraintName;
145146
}
147+
148+
public boolean isConstraintIfExists() {
149+
return constraintIfExists;
150+
}
151+
152+
public void setConstraintIfExists( boolean constraintIfExists ) {
153+
this.constraintIfExists = constraintIfExists;
154+
}
146155

147156
public List<String> getPkColumns() {
148157
return pkColumns;
@@ -215,7 +224,11 @@ public String toString() {
215224
b.append(")");
216225
}
217226
} else if (constraintName != null) {
218-
b.append("CONSTRAINT ").append(constraintName);
227+
b.append("CONSTRAINT ");
228+
if(constraintIfExists) {
229+
b.append("IF EXISTS ");
230+
}
231+
b.append(constraintName);
219232
} else if (pkColumns != null) {
220233
b.append("PRIMARY KEY (").append(PlainSelect.getStringList(pkColumns)).append(')');
221234
} else if (ukColumns != null) {

src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3864,7 +3864,7 @@ AlterExpression AlterExpression():
38643864

38653865
)
38663866
|
3867-
( <K_CONSTRAINT>
3867+
( <K_CONSTRAINT> [<K_IF> <K_EXISTS> { alterExp.setConstraintIfExists(true); } ]
38683868
(tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>)
38693869
{
38703870
alterExp.setConstraintName(tk.image);

src/test/java/net/sf/jsqlparser/statement/alter/AlterTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,11 @@ public void testAlterTableDropConstraint() throws JSQLParserException {
146146
assertEquals(alterExpression.getConstraintName(), "YYY");
147147
}
148148

149+
@Test
150+
public void testAlterTableDropConstraintIfExists() throws JSQLParserException {
151+
assertSqlCanBeParsedAndDeparsed("ALTER TABLE Persons DROP CONSTRAINT IF EXISTS UC_Person");
152+
}
153+
149154
@Test
150155
public void testAlterTablePK() throws JSQLParserException {
151156
final String sql = "ALTER TABLE `Author` ADD CONSTRAINT `AuthorPK` PRIMARY KEY (`ID`)";

0 commit comments

Comments
 (0)