fastmodel-transform/fastmodel-transform-adbmysql/src/main/java/com/aliyun/fastmodel/transform/adbmysql/format/AdbMysqlOutVisitor.java [522:555]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    public Boolean visitForeignKeyConstraint(ForeignKeyConstraint foreignKeyConstraint, Integer context) {
        Identifier name = foreignKeyConstraint.getName();
        if (!IdentifierUtil.isSysIdentifier(name)) {
            builder.append(indentString(context)).append(CONSTRAINT).append(formatExpression(name));
            builder.append(" FOREIGN KEY");
        } else {
            builder.append(indentString(context)).append("FOREIGN KEY");
        }
        if (foreignKeyConstraint.getIndexName() != null) {
            builder.append(" ").append(formatExpression(foreignKeyConstraint.getIndexName()));
        }
        builder.append("(");
        List<Identifier> colNames = foreignKeyConstraint.getColNames();
        String collect = colNames.stream().map(this::formatExpression).collect(joining(","));
        builder.append(collect).append(")");
        //reference
        builder.append(" REFERENCES ");
        builder.append(formatName(foreignKeyConstraint.getReferenceTable()));

        String referenceColumns = foreignKeyConstraint.getReferenceColNames().stream().map(this::formatExpression).collect(joining(","));
        builder.append("(").append(referenceColumns).append(")");

        if (foreignKeyConstraint.getMatchAction() != null) {
            builder.append(" MATCH ").append(foreignKeyConstraint.getMatchAction().name());
        }

        if (foreignKeyConstraint.getReferenceAction() != null) {
            //ON (DELETE|UPDATE) reference_action
            builder.append(" ON ");
            builder.append(foreignKeyConstraint.getReferenceOperator().name());
            builder.append(" ").append(foreignKeyConstraint.getReferenceAction().getValue());
        }
        return true;
    }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



fastmodel-transform/fastmodel-transform-oceanbase/src/main/java/com/aliyun/fastmodel/transform/oceanbase/format/OceanBaseMysqlOutVisitor.java [704:739]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    public Boolean visitForeignKeyConstraint(ForeignKeyConstraint foreignKeyConstraint, Integer context) {
        // (CONSTRAINT opt_constraint_name)? FOREIGN KEY index_name? LeftParen column_name_list RightParen references_clause
        // REFERENCES relation_factor LeftParen column_name_list RightParen (MATCH match_action)? (opt_reference_option_list reference_option)?
        Identifier name = foreignKeyConstraint.getName();
        if (!IdentifierUtil.isSysIdentifier(name)) {
            builder.append(indentString(context)).append(CONSTRAINT).append(formatExpression(name));
            builder.append(" FOREIGN KEY");
        } else {
            builder.append(indentString(context)).append("FOREIGN KEY");
        }
        if (foreignKeyConstraint.getIndexName() != null) {
            builder.append(" ").append(formatExpression(foreignKeyConstraint.getIndexName()));
        }
        builder.append("(");
        List<Identifier> colNames = foreignKeyConstraint.getColNames();
        String collect = colNames.stream().map(this::formatExpression).collect(joining(","));
        builder.append(collect).append(")");
        //reference
        builder.append(" REFERENCES ");
        builder.append(formatName(foreignKeyConstraint.getReferenceTable()));

        String referenceColumns = foreignKeyConstraint.getReferenceColNames().stream().map(this::formatExpression).collect(joining(","));
        builder.append("(").append(referenceColumns).append(")");

        if (foreignKeyConstraint.getMatchAction() != null) {
            builder.append(" MATCH ").append(foreignKeyConstraint.getMatchAction().name());
        }

        if (foreignKeyConstraint.getReferenceAction() != null) {
            //ON (DELETE|UPDATE) reference_action
            builder.append(" ON ");
            builder.append(foreignKeyConstraint.getReferenceOperator().name());
            builder.append(" ").append(foreignKeyConstraint.getReferenceAction().getValue());
        }
        return true;
    }
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



