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 для их Комментариев.
Я запустил и переписывание HTML было лучшим решением, которое я мог придумать. Самая большая проблема, с которой я столкнулся с этим подходом, заключается в том, что веб-браузер является интерактивным в течение нескольких секунд, пока не будет вызван метод webViewDidFinishLoad:, поэтому ссылки кажутся неработающими в течение нескольких секунд, пока они не будут перезаписаны.
Я переписал три области: ссылки, сообщения в формах и вызовы window.open ().
Я использовал аналогичный подход к первому коду, вырезанному в ответе Ясариана , чтобы перезаписать цель для ссылок и форм, перебирая теги и формы. Чтобы переопределить window.open, я использовал код, подобный следующему:
var oldWindowOpen = window.open;
window.open = function(url, sName, sFeatures, bReplace) {
oldWindowOpen(url, '_self');
};
Итак, после небольшого исследования стало ясно, что класс UIWebView намеренно игнорирует ссылки, которые открываются в новом окне (либо с помощью элемента 'target' в теге, либо с помощью javascript в событии onClick).
Единственное решение, которое я нашел, - это манипулирование html страницы с помощью javascript. Хотя это работает в некоторых случаях, это не пуленепробиваемое. Вот несколько примеров:
links = document.getElementsByTagName('a');
for (i=0; i<links.length; i++)
{
links[i].target='_self';
}
Это изменит все ссылки, использующие элемент 'target', чтобы они указывали на _self - вместо _blank или _new. Это, вероятно, будет работать повсеместно и не вызовет никаких проблем.
Другой фрагмент, который я нашел, придерживался той же идеи, но с событием onClick:
links = document.getElementsByTagName('a');
for (i=0; i<links.length; i++)
{
links[i].onclick='';
}
Этот просто неприятный. Это будет работать, только если в теге ссылки правильно установлен элемент href, и только если событие onclick используется для открытия нового окна (используя window.open () или что-то подобное). Причины, по которым это неприятно, не нуждаются в объяснении, но одним из примеров может быть использование onClick для чего-либо, кроме открытия окна, что является очень распространенным случаем.
Я думаю, что можно пойти дальше и начать выполнение некоторого сопоставления строк с помощью метода onClick и проверка на window.open (), но опять же, это действительно далеко от идеала.
Вот как я заставляю работать ссылки на твиттер (т. Е. Ссылки на страницы, которые пытаются открываться в новых окнах):
-(BOOL)webView:(UIWebView *)mainWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
//Allows for twitter links
[self.mainWebView loadRequest:request];
return NO;
}
return YES;
}