public TableDescription(string table, ColumnDescription primaryKey, params ColumnDescription[] columns) { this.table = table; this.primaryKey = primaryKey; this.columns = columns; }
public TableDescription(string table, ColumnDescription primaryKey, IEnumerable<ColumnDescription> columns) : this(table, primaryKey, columns.ToArray()) { }
public string CreateColumn(ColumnDescription description) { return _AlterTableStatement(description.column.tableName, _AddColumnDefinition(description)); }
public string ModifyColumnPostgresStyle(ColumnDescription description) { return _AlterTableStatement(description.column.tableName, _ModifyColumnDefinitionPostgresStyle(description)); }
private string _ModifyColumnDefinitionPostgresStyle(ColumnDescription description) { throw new NotImplementedException(); }
/// <summary> /// It seems that this feature is not mentioned in any SQL standart and is only implemented in Oracle and MySQL. /// However, it is similar to other SQL language structures, so it should be implemented in SQLQueryManager, not OracleDBTraits /// </summary> private string _ModifyColumnDefinitionOracleStyle(ColumnDescription description) { return string.Format( "modify ({0})", _ColumnDefinition(description, ColumnSpecific.None, Specific.OracleNullExtension) ); }
/// <summary> /// SQL-92, page 262<br/> /// Note that setting oracleNullExtension to true will make the query non-compliant /// </summary> private string _ColumnDefinition(ColumnDescription description, ColumnSpecific columnSpecific, Specific specific) { return string.Format( "{0} {1} {2} {3} {4}", nameEscaper(description.column.columnName), //column name description.options.type, //data type | domain name (description.options.defaultValue != null) ? "DEFAULT " + description.options.defaultValue : "", //NOTE possible SQL injection here! //default clause String.Join( " ", Enumerable.Empty<string>() .ConcatScalar(description.options.isNotNull ? "NOT NULL" : ((specific & Specific.OracleNullExtension) == Specific.OracleNullExtension ? "NULL" : null)) .ConcatScalar((columnSpecific & ColumnSpecific.PrimaryKey) == ColumnSpecific.PrimaryKey ? "PRIMARY KEY" : null) .ToArray() ), //column constraint definition "" //collate clause ); }
/// <summary> /// SQL-92, page 284 /// </summary> private string _AddColumnDefinition(ColumnDescription description) { return string.Format( "add {0}", _ColumnDefinition(description, ColumnSpecific.None, Specific.None) ); }
public void CreateColumn(ColumnDescription description) { this.traits.CreateColumn(this.CreateTextCommand, description); }