Как инициализировать переменную в верхней части класса со значением по умолчанию? Например:
public class SomeClass {
private int maxRows = 15000;
...
// Inside another method
for (int i = 0; i < maxRows; i++) {
// Do something
}
public void setMaxRows(int maxRows) {
this.maxRows = maxRows;
}
public int getMaxRows() {
return this.maxRows;
}
В этом случае 15000 является магическим числом (согласно CheckStyles). Для меня установка значения по умолчанию - это нормально. Я не хочу этого делать:
private static final int DEFAULT_MAX_ROWS = 15000;
private int maxRows = DEFAULT_MAX_ROWS;
Сложнее ли это читать? Я никогда не рассматривал это, пока не установил CheckStyles.
Уникальность может быть обеспечена с помощью ограничения уникальности.
Независимо от регистра уникальности индекса определяется параметрами сортировки сервера (или таблицы) .
Вы можете получить текущее сопоставление своей базы данных с помощью этого запроса:
SELECT DATABASEPROPERTYEX('AdventureWorks', 'Collation') SQLCollation;
и вы должны получить что-то вроде:
SQLCollation
————————————
SQL_Latin1_General_CP1_CI_AS
Здесь «CI_AS» в конце сопоставления означает: CI = Case Insensitive, AS = С учетом акцента.
Это можно изменить на все, что вам нужно. Если ваша база данных и / или таблица имеют сортировку с учетом регистра, я ожидаю, что уникальность вашего индекса также будет чувствительна к регистру, например, ваши abcdef и ABCDEF должны обе допустимы как уникальные строки.
Марк
ОБНОВЛЕНИЕ:
Если кому-то нужно сделать это на существующей таблице, в которой уже есть unique key/index
, определенный в столбце varchar
/ nvarchar
, вот сценарий.
ALTER TABLE [YourTable] DROP CONSTRAINT [UIX_YourUniqueIndex]
GO
ALTER TABLE [YourTable] ALTER COLUMN [YourColumn] [nvarchar](50) COLLATE Latin1_General_CS_AS NOT NULL;
GO
ALTER TABLE [YourTable] ADD CONSTRAINT [UIX_YourUniqueIndex] UNIQUE NONCLUSTERED
(
[YourColumn] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO