Skip to content

Commit a54ea14

Browse files
rfscholtewumpz
authored andcommitted
Support Alter Table Add Unique Constraint (#708)
1 parent aa932c4 commit a54ea14

File tree

3 files changed

+11
-3
lines changed

3 files changed

+11
-3
lines changed

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,8 +232,11 @@ public String toString() {
232232
} else if (pkColumns != null) {
233233
b.append("PRIMARY KEY (").append(PlainSelect.getStringList(pkColumns)).append(')');
234234
} else if (ukColumns != null) {
235-
b.append("UNIQUE KEY ").append(ukName).append(" (").append(PlainSelect.
236-
getStringList(ukColumns)).append(")");
235+
b.append("UNIQUE");
236+
if (ukName != null) {
237+
b.append(" KEY ").append(ukName);
238+
}
239+
b.append(" (").append(PlainSelect.getStringList(ukColumns)).append(")");
237240
} else if (fkColumns != null) {
238241
b.append("FOREIGN KEY (").append(PlainSelect.getStringList(fkColumns)).
239242
append(") REFERENCES ").append(fkSourceTable).append(" (").append(

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3782,7 +3782,7 @@ AlterExpression AlterExpression():
37823782
("," alterExpressionColumnDataType = AlterExpressionColumnDataType() { alterExp.addColDataType(alterExpressionColumnDataType); } )* ")"
37833783
)
37843784
|
3785-
( <K_UNIQUE> <K_KEY> (tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) columnNames=ColumnsNamesList() { alterExp.setUkName(tk.image); alterExp.setUkColumns(columnNames); } )
3785+
( <K_UNIQUE> (<K_KEY> (tk=<S_IDENTIFIER> | tk=<S_QUOTED_IDENTIFIER>) { alterExp.setUkName(tk.image); } )? columnNames=ColumnsNamesList() { alterExp.setUkColumns(columnNames); } )
37863786
|
37873787
//following two choices regarding foreign keys should be merged
37883788
( <K_FOREIGN> <K_KEY> columnNames=ColumnsNamesList() { alterExp.setFkColumns(columnNames); }

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,11 @@ public void testAlterTableAddConstraintWithConstraintState() throws JSQLParserEx
102102
public void testAlterTableAddConstraintWithConstraintState2() throws JSQLParserException {
103103
assertSqlCanBeParsedAndDeparsed("ALTER TABLE RESOURCELINKTYPE ADD CONSTRAINT RESOURCELINKTYPE_PRIMARYKEY PRIMARY KEY (PRIMARYKEY) DEFERRABLE NOVALIDATE");
104104
}
105+
106+
@Test
107+
public void testAlterTableAddUniqueConstraint() throws JSQLParserException {
108+
assertSqlCanBeParsedAndDeparsed("ALTER TABLE Persons ADD UNIQUE (ID)");
109+
}
105110

106111
@Test
107112
public void testAlterTableForgeignKey2() throws JSQLParserException {

0 commit comments

Comments
 (0)