Вы также можете попробовать следующее:
from itertools import izip
l = ['name1', 'name2', 'name3', 'name4', 'name5', 'name6']
for t in izip(*[iter(l)]*3):
print '\t'.join(t)
name1 name2 name3 name4 name5 name6
Если вы не уверены, что длина списка будет кратной 3, вы можете использовать izip_longest
, применяя та же идея:
from itertools import izip_longest as izipl
l = ['name1', 'name2', 'name3', 'name4', 'name5', 'name6', 'name7']
for t in izipl(fillvalue='', *[iter(l)]*3):
print '\t'.join(t)
name1 name2 name3 name4 name5 name6 name7
ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
ALTER TABLE SomeTable
ADD SomeCol Bit NULL --Or NOT NULL.
CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.
Имя Дополнительного ограничения:
, Если Вы не учитываете CONSTRAINT D_SomeTable_SomeCol
тогда, SQL Server автоматически сгенерирует
Значение-по-умолчанию-Contraint с забавным Именем как: DF__SomeTa__SomeC__4FB7FEF6
Дополнительный Оператор Со значениями:
Эти WITH VALUES
только необходим, когда Ваш Столбец является Nullable
и Вы хотите Значение по умолчанию, используемое для Существующих Записей.
, Если Ваш Столбец будет NOT NULL
, то он будет автоматически использовать Значение по умолчанию
для всех Существующих Записей, определяете ли Вы WITH VALUES
или нет.
, Как Вставляет работу с Ограничением по умолчанию:
, Если Вы вставляете Запись в SomeTable
и делаете не , Определяют SomeCol
значение, тогда оно Примет значение по умолчанию к 0
.
, Если Вы вставляете Запись и , Определяют SomeCol
значение как [1 111] (и Ваш столбец позволяет, аннулирует),
тогда Ограничение по умолчанию будет не использоваться, и NULL
будет вставлен как Значение.
Примечания были основаны на общей большой обратной связи ниже.
Особая благодарность:
@Yatrix, @WalterStabosz, @YahooSerious, и @StackMan для их Комментариев.
Остерегайтесь, когда столбец, который Вы добавляете, имеет NOT NULL
ограничение, все же не имеет DEFAULT
ограничение (значение). ALTER TABLE
оператор перестанет работать в этом случае, если таблица будет иметь какие-либо строки в ней. Решение состоит в том, чтобы или удалить NOT NULL
ограничение из нового столбца или обеспечить DEFAULT
ограничение для него.
ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO
включение ЗНАЧЕНИЕ ПО УМОЛЧАНИЮ заливки столбец в существующий строки со значением по умолчанию, таким образом, ограничение NOT NULL не нарушено.
ALTER TABLE ADD ColumnName {Column_Type} Constraint
ALTER TABLE статьи MSDN (Transact-SQL) имеет весь изменить синтаксис таблицы.
ALTER TABLE <table name>
ADD <new column name> <data type> NOT NULL
GO
ALTER TABLE <table name>
ADD CONSTRAINT <constraint name> DEFAULT <default value> FOR <new column name>
GO
В SQL Server можно использовать ниже шаблона:
ALTER TABLE {tablename}
ADD
{columnname} {datatype} DEFAULT {default_value}
, Например, для добавления нового столбца [Column1] типа данных int
со значением по умолчанию = 1 в существующую таблицу [Table1] можно использовать ниже запроса:
ALTER TABLE [Table1]
ADD
[Column1] INT DEFAULT 1