Esempio n. 1
0
 public IEnumerable<string> AddColumn(string tableName, Column column)
 {
     AddMethodName();
     AddNewObjectNames(column.Name);
     _dataTypes.Add(new UsedDataType(column.DataType, false, false));
     return Enumerable.Empty<string>();
 }
Esempio n. 2
0
 public IEnumerable<string> AddColumn(string tableName, Column column)
 {
     // assemble ALTER TABLE statements
     string commandText = string.Format(@"{0} ADD ", AlterTable(tableName));
     commandText += GetColumnString(column, false);
     yield return commandText;
 }
Esempio n. 3
0
 protected override IEnumerable<string> DropDefaultConstraint(string tableName, Column column, bool checkIfExists)
 {
     // checkIfExists can be ignored
     yield return string.Format(CultureInfo.InvariantCulture, @"ALTER TABLE {0} ALTER COLUMN {1} DROP DEFAULT",
         Escape(tableName),
         Escape(column.Name));
 }
Esempio n. 4
0
 public IEnumerable<string> AddColumn(TableName tableName, Column column)
 {
     string commandText = string.Format(CultureInfo.InvariantCulture, @"ALTER TABLE {0} ADD {1}",
                                        Escape(tableName.Name),
                                        GetColumnSpec(column));
     yield return commandText;
 }
Esempio n. 5
0
        public IEnumerable <string> AlterColumn(string tableName, Column column)
        {
            // drop (possibly) existing default constraint
            Table table = GetTable(tableName);
            var   c     = new Microsoft.SqlServer.Management.Smo.Column(table, column.Name)
            {
                Nullable = column.IsNullable,
                DataType = Convert(column.DataType),
            };
            DefaultConstraint defaultConstraint = AddDefaultConstraint(c, tableName, "dummy");

            defaultConstraint.Drop();
            foreach (string command in ScriptChanges(table.Parent.Parent))
            {
                yield return(string.Format(CultureInfo.InvariantCulture, "IF OBJECT_ID('{0}') IS NOT NULL ", defaultConstraint.Name) + command);
            }

            // alter column
            table = GetTable(tableName);
            c     = new Microsoft.SqlServer.Management.Smo.Column(table, column.Name)
            {
                Nullable = column.IsNullable,
                DataType = Convert(column.DataType),
            };
            if (column.DefaultValue != null)
            {
                AddDefaultConstraint(c, tableName, column.DefaultValue);
            }
            c.Alter();
            foreach (string command in ScriptChanges(table.Parent.Parent))
            {
                yield return(command);
            }
        }
Esempio n. 6
0
 public IEnumerable<string> AddColumn(string tableName, Column column)
 {
     if (column.IsRowVersion)
     {
         ThrowRowVersionNotSupportedException();
     }
     yield return string.Format(CultureInfo.InvariantCulture, @"ALTER TABLE ""{0}"" ADD COLUMN {1}", tableName, GetColumnDefinition(column));
 }
Esempio n. 7
0
 protected override IEnumerable<string> DropDefaultConstraint(string tableName, Column column, bool checkIfExists)
 {
     string constraintName = GetDefaultConstraintName(tableName, column.Name);
     string commandText = DropConstraint(tableName, constraintName);
     if (checkIfExists)
     {
         commandText = PrefixIfObjectExists(constraintName, commandText);
     }
     yield return commandText;
 }
Esempio n. 8
0
        private const int MaximumDbObjectNameLength = 64; // http://stackoverflow.com/questions/6868302/maximum-length-of-a-table-name-in-mysql

        #endregion Fields

        #region Methods

        public IEnumerable<string> AddColumn(string tableName, Column column)
        {
            // assemble ALTER TABLE statements
            string commandText = string.Format(CultureInfo.InvariantCulture, @"{0} ADD ", AlterTable(tableName));
            string defaultConstraintClause = GetDefaultConstraintClause(tableName, column.Name, column.DefaultValue);
            commandText += string.Format(CultureInfo.InvariantCulture, "{0} {1} {2}NULL{3}",
                Escape(column.Name),
                GetTypeSpecifier(column.DataType),
                column.IsNullable ? string.Empty : "NOT ",
                defaultConstraintClause);
            yield return commandText;
        }
Esempio n. 9
0
        public IEnumerable<string> AddColumn(string tableName, Column column)
        {
            if (column.IsRowVersion)
            {
                ThrowRowVersionNotSupportedException();
            }

            // assemble ALTER TABLE statements
            string commandText = string.Format(@"{0} ADD ", AlterTable(tableName));
            commandText += GetColumnString(column, false);
            yield return commandText;
        }
Esempio n. 10
0
        public IEnumerable <string> DropDefault(string tableName, Column column)
        {
            Table table = GetTable(tableName);
            var   c     = new Microsoft.SqlServer.Management.Smo.Column(table, column.Name)
            {
                DataType = Convert(column.DataType),
                Nullable = column.IsNullable,
            };
            DefaultConstraint defaultConstraint = AddDefaultConstraint(c, tableName, column.DefaultValue);

            defaultConstraint.Drop();
            return(ScriptChanges(table.Parent.Parent));
        }
Esempio n. 11
0
 public IEnumerable<string> AddColumn(string tableName, Column column)
 {
     Table table = GetTable(tableName);
     var c = new Microsoft.SqlServer.Management.Smo.Column(table, column.Name)
     {
         DataType = Convert(column.DataType),
         Nullable = column.IsNullable,
     };
     if (column.DefaultValue != null)
     {
         AddDefaultConstraint(c, tableName, column.DefaultValue);
     }
     table.Columns.Add(c);
     table.Alter();
     return ScriptChanges(table.Parent.Parent);
 }
Esempio n. 12
0
        public IEnumerable <string> AddColumn(string tableName, Column column)
        {
            Table table = GetTable(tableName);
            var   c     = new Microsoft.SqlServer.Management.Smo.Column(table, column.Name)
            {
                DataType = Convert(column.DataType),
                Nullable = column.IsNullable,
            };

            if (column.DefaultValue != null)
            {
                AddDefaultConstraint(c, tableName, column.DefaultValue);
            }
            table.Columns.Add(c);
            table.Alter();
            return(ScriptChanges(table.Parent.Parent));
        }
 public IEnumerable<string> AlterColumn(string tableName, Column column)
 {
     // remove any existing default value constraints (before possibly adding new ones)
     foreach (string text in DropDefaultConstraint(tableName, column, true))
     {
         yield return text;
     }
     yield return AlterTable(tableName) + string.Format(CultureInfo.InvariantCulture, " ALTER COLUMN [{0}] {1} {2}NULL",
         column.Name,
         GetTypeSpecifier(column.DataType),
         column.IsNullable ? string.Empty : "NOT ");
     if (column.DefaultValue != null)
     {
         yield return AlterTable(tableName) + string.Format(CultureInfo.InvariantCulture, " ADD {0} FOR {1}",
             GetDefaultConstraintClause(tableName, column.Name, column.DefaultValue),
             Escape(column.Name));
     }
 }
Esempio n. 14
0
        public IEnumerable<string> AlterColumn(string tableName, Column column)
        {
            string query = @"declare
                             l_nullable varchar2(1);
                             l_datatype varchar2(106);
                            begin
                              select
                                    nullable into l_nullable

                              from user_tab_columns
                              where table_name = '{0}'
                              and   column_name = '{1}';

                              select
                                     data_type into l_datatype
                              from user_tab_columns
                              where table_name = '{0}'
                              and   column_name = '{1}';

                              if l_nullable = 'N' and l_datatype != '{2}' then
                                execute immediate 'alter table ""{0}"" modify (""{1}"" {2} {5} {3}  )';
                              end if;
                              if l_nullable = 'Y' and l_datatype != '{2}' then
                                execute immediate 'alter table ""{0}"" modify (""{1}"" {2}  {5} {4} )';
                              end if;
                              if l_nullable = 'N' and l_datatype = '{2}' then
                                execute immediate 'alter table ""{0}"" modify (""{1}"" {5} {3} )';
                              end if;
                              if l_nullable = 'Y' and l_datatype = '{2}' then
                                execute immediate 'alter table ""{0}"" modify (""{1}"" {5} {4} )';
                              end if;
                            end;";

            query = query.Replace(Environment.NewLine, " ");
            string colN = column.IsNullable ? "NULL" : "";
            string colY = column.IsNullable ? "" : "NOT NULL";
            string defaultConstraintClause = (column.DefaultValue == null) ? "DEFAULT NULL" : string.Format(CultureInfo.InvariantCulture, " DEFAULT {0}", GetDefaultValueAsString(column.DefaultValue).Replace("'", "''"));
            yield return string.Format(CultureInfo.InvariantCulture, query, tableName, column.Name, GetTypeSpecifier(column.DataType), colN, colY, defaultConstraintClause);
        }
Esempio n. 15
0
        public IEnumerable<string> AlterColumn(string tableName, Column column)
        {
            // drop (possibly) existing default constraint
            Table table = GetTable(tableName);
            var c = new Microsoft.SqlServer.Management.Smo.Column(table, column.Name)
            {
                Nullable = column.IsNullable,
                DataType = Convert(column.DataType),
            };
            DefaultConstraint defaultConstraint = AddDefaultConstraint(c, tableName, "dummy");
            defaultConstraint.Drop();
            foreach (string command in ScriptChanges(table.Parent.Parent))
            {
                yield return string.Format(CultureInfo.InvariantCulture, "IF OBJECT_ID('{0}') IS NOT NULL ", defaultConstraint.Name) + command;
            }

            // alter column
            table = GetTable(tableName);
            c = new Microsoft.SqlServer.Management.Smo.Column(table, column.Name)
            {
                Nullable = column.IsNullable,
                DataType = Convert(column.DataType),
            };
            if (column.DefaultValue != null)
            {
                AddDefaultConstraint(c, tableName, column.DefaultValue);
            }
            c.Alter();
            foreach (string command in ScriptChanges(table.Parent.Parent))
            {
                yield return command;
            }
        }
Esempio n. 16
0
 public IEnumerable<string> DropDefault(string tableName, Column column)
 {
     AddMethodName();
     return Enumerable.Empty<string>();
 }
 protected abstract IEnumerable<string> DropDefaultConstraint(string tableName, Column column, bool checkIfExists);
Esempio n. 18
0
 public IEnumerable<string> DropDefault(TableName tableName, Column column)
 {
     yield return string.Format(CultureInfo.InvariantCulture, "ALTER TABLE {0} ALTER COLUMN {1} DROP DEFAULT",
                                Escape(tableName.Name),
                                Escape(column.Name));
 }
Esempio n. 19
0
 public IEnumerable<string> AlterColumn(string tableName, Column column)
 {
     // http://www.sqlite.org/omitted.html
     throw new NotSupportedException("Rename the table, create a new table with the correct columns, and copy the contents from the renamed table.");
 }
Esempio n. 20
0
 private string GetColumnDefinition(Column column)
 {
     return string.Format(CultureInfo.InvariantCulture, @"""{0}"" {1}{2}",
         column.Name,
         GetTypeSpecifier(column.DataType),
         GetColumnConstraint(column));
 }
Esempio n. 21
0
        private string GetColumnString(Column column, bool isIdentity)
        {
            string defaultConstraintClause = string.Empty;
            string commandText = string.Empty;

            if (!isIdentity && !GetTypeSpecifier(column.DataType).EndsWith("LOB", StringComparison.OrdinalIgnoreCase))
            {
                string defaultValue = column.DefaultValue == null ? "NULL" : GetDefaultValueAsString(column.DefaultValue);

                defaultConstraintClause = string.Format(CultureInfo.InvariantCulture, " DEFAULT {0}", defaultValue);
            }
            else if (column.DefaultValue != null)
            {
                throw new InvalidOperationException("Cannot add default values to identity columns or LOB columns."); // CLEAN: add validation for these cases
            }

            commandText += string.Format(CultureInfo.InvariantCulture, "{0} {1} {3} {4} {2}NULL",
                Escape(column.Name),
                GetTypeSpecifier(column.DataType),
                column.IsNullable ? string.Empty : "NOT ",
                defaultConstraintClause,
                isIdentity ? Identity : string.Empty);

            return commandText;
        }
Esempio n. 22
0
 public IEnumerable<string> DropDefault(string tableName, Column column)
 {
     Debug.Assert(column.DefaultValue == null, "The DefaultValue must be null as we are going to call AlterColumn with it.");
     return AlterColumn(tableName, column);
 }
 public IEnumerable<string> ToSql(IProvider provider, IMigrationContext context)
 {
     var dataType = new DataType(_type, Size, Scale);
     var column = new Column(Parent.ColumnName, dataType, _isNullable, DefaultValue, false);
     return provider.AlterColumn(new TableName(Parent.Parent.TableName, Parent.Parent.Schema ?? context.GetDefaultSchema()), column);
 }
Esempio n. 24
0
 public IEnumerable<string> AlterColumn(TableName tableName, Column column)
 {
     yield return string.Format(CultureInfo.InvariantCulture, "ALTER TABLE {0} MODIFY COLUMN {1}",
                                Escape(tableName.Name),
                                GetColumnSpec(column));
 }
Esempio n. 25
0
 public IEnumerable<string> DropDefault(string tableName, Column column)
 {
     Table table = GetTable(tableName);
     var c = new Microsoft.SqlServer.Management.Smo.Column(table, column.Name)
     {
         DataType = Convert(column.DataType),
         Nullable = column.IsNullable,
     };
     DefaultConstraint defaultConstraint = AddDefaultConstraint(c, tableName, column.DefaultValue);
     defaultConstraint.Drop();
     return ScriptChanges(table.Parent.Parent);
 }
Esempio n. 26
0
        private string GetColumnSpec(Column column)
        {
            string defaultValue = GetDefaultValueAsString(column.DefaultValue);

            return string.Format(CultureInfo.InvariantCulture, @"{0} {1} {2}NULL {3}",
                                 Escape(column.Name),
                                 GetTypeSpecifier(column.DataType),
                                 column.IsNullable ? string.Empty : "NOT ",
                                 defaultValue.Length > 0 ? "DEFAULT " + defaultValue : string.Empty);
        }
Esempio n. 27
0
 public IEnumerable<string> AlterColumn(TableName tableName, Column column)
 {
     AddMethodName();
     _dataTypes.Add(new UsedDataType(column.DataType, false, false));
     return Enumerable.Empty<string>();
 }
Esempio n. 28
0
        private string GetColumnConstraint(Column column)
        {
            CreatedColumn createdColumn = column as CreatedColumn;

            if (createdColumn != null && createdColumn.IsIdentity && !createdColumn.IsPrimaryKey)
            {
                // FEATURE: extend the validation that is uses the actual migration commands such that this exception can be caught by the validation
                throw new NotSupportedException("Identity can only be used on primary key columns.");
            }

            // INTEGER column as PK is automatically AUTOINCREMENT: http://www.sqlite.org/autoinc.html
            return string.Format(CultureInfo.InvariantCulture, "{0}{1}",
                createdColumn != null && createdColumn.IsIdentity ? string.Empty : (column.IsNullable ? " NULL" : " NOT NULL"),
                column.DefaultValue != null ? " DEFAULT " + GetDefaultValueAsString(column.DefaultValue) : string.Empty);
        }
Esempio n. 29
0
 public IEnumerable<string> AlterColumn(string tableName, Column column)
 {
     yield return string.Format("{0} ADD {1}", AlterTable(tableName), GetColumnString(column, false));
 }
Esempio n. 30
0
 public IEnumerable<string> AddColumn(string tableName, Column column)
 {
     yield return string.Format(CultureInfo.InvariantCulture, @"ALTER TABLE ""{0}"" ADD COLUMN {1}", tableName, GetColumnDefinition(column));
 }
Esempio n. 31
0
 public IEnumerable<string> DropDefault(string tableName, Column column)
 {
     Debug.Assert(column.DefaultValue == null);
     return DropDefaultConstraint(tableName, column.Name, false);
 }
 public IEnumerable<string> ToSql(IProvider provider, IRuntimeContext context)
 {
     var dataType = new DataType(_type, Size, Scale);
     var column = new Column(Parent.ColumnName, dataType, _isNullable, DefaultValue, false);
     return provider.AlterColumn(Parent.Parent.TableName, column);
 }
Esempio n. 33
0
        public IEnumerable<string> AlterColumn(string tableName, Column column)
        {
            string defaultValue = GetDefaultValueAsString(column.DefaultValue);

            yield return string.Format(CultureInfo.InvariantCulture, "ALTER TABLE {0} MODIFY COLUMN {1}",
                Escape(tableName),
                GetColumnSpec(column));
        }