Начиная с MySql 8.0.16, вы можете добавить ограничение CHECK , которое фактически что-то делает.
(Между MySql 5.7 и 8.0.16 вы можете добавить один, но он будет просто проигнорирован)
Для MariaDb рабочее ограничение CHECK было реализовано начиная с версии 10.2.1. Ссылка
Так что, если ваша версия поддерживает это, то это может быть что-то вроде этого примера:
blockquote>create table Friend ( id int primary key auto_increment, name varchar(30) not null ); insert into Friend (name) values ('John Doe'), ('Jane Shepard') create table Friendship ( id int primary key auto_increment, fk_friend_one_id int not null, fk_friend_two_id int not null, CONSTRAINT chk_friend2_gt_friend1 check (fk_friend_two_id > fk_friend_one_id), CONSTRAINT fk_friend_one_id foreign key (fk_friend_one_id) references Friend(id), CONSTRAINT fk_friend_two_id foreign key (fk_friend_two_id) references Friend(id), CONSTRAINT idx_friends unique index (fk_friend_one_id, fk_friend_two_id) );
[112 ] blockquote>insert into Friendship (fk_friend_one_id, fk_friend_two_id) value (2, 1);
insert into Friendship (fk_friend_one_id, fk_friend_two_id) value (1, 1);
CONSTRAINT `chk_friend2_gt_friend1` failed for `mydb`.`Friendship`blockquote>blockquote>insert into Friendship (fk_friend_one_id, fk_friend_two_id) value (1, 2);
select * from Friendship order by id;
id | fk_friend_one_id | fk_friend_two_id -: | ---------------: | ---------------: 1 | 1 | 2blockquote>db <> скрипка здесь
Обычно я сначала просматриваю системное свойство, а затем путь к классам. так:
java -DconfigFile=/filelocation/file.xml
можно прочитать как:
String propfile = System.getProperty(configFile);
if (propfile != null) {
// read in file
new File(propfile);
...
} else {
// read in file from classpath
getClass.getResource("/configfile.xml")
}
I agree with the previous poster (+1) - have an option in case some day you will need it. Однако есть одна загвоздка. Вы можете вызвать у себя головную боль, если такой мощный инструмент попадет в чужие руки. Нет большой разницы между файлами контекста Spring и классами Java, это код. Итак, проверьте, кто ваши пользователи. Один чрезмерно увлеченный гуру QA может сделать вашу жизнь несчастной, если вы не подготовитесь.
Я обычно помещаю файлы конфигурации XML в путь к классам и показываю конфигурацию, которая может быть адаптирована (например, для различных сред), во внешние файлы свойств, используя PropertyPlaceholderConfigurer
или подобное (зависит от фактических требований).
Хороший способ создания профилей - это иметь файлы свойств с набором настроек для каждой среды и позволить администратору выбрать тот, который нужен предоставление системного свойства, значение которого затем переводится в поиск файла свойств. Подробную информацию см. В документе API PropertyPlaceholderConfigurer
.
Приятно иметь возможность настраивать его обоими способами - либо напрямую как файл, либо через ресурс в пути к классам, который может быть или не находиться в файле jar. Это дает вам большую гибкость.