Понедельник — отличный день, чтобы разогреть мозги небольшим техническим кейсом 💡 Сегодня короткий, но полезный пост — с ответом сразу.
📌 Дано:
create table demo_table ( ID char(4 CHAR), value VARCHAR2(64 CHAR) );
Известно, что есть следующие индексы и ключи:
create index DEMO_TBL_VALUE_IX on demo_table (VALUE);
alter table DEMO_TABLE add constraint DEMO_TBL_PK primary key (ID) using index;
Вопрос (c подвохом) почему такая вставка проходит:
insert into demo_table values('0001', 1000);
А эта падает с ошибкойORA-01722: неверное число:
insert into demo_table values('0002', 'Test');
Ответ при наличии следующего индекса
create index DEMO_TBL_NUM_IX on demo_table(trunc(VALUE));
Такая конструкция называется индексом по функции (function based index). В реальных проектах она используется довольно часто, например, когда на строковое поле мы создаем индекс UPPER(<column>). Особенность такого индекса в том, что в листьях он хранит результат выполнения этой функции для каждого rowid. Поэтому никакой магии тут нет: если мы не можем записать в индекс результат функции, то и вставку выполнить мы не можем.
В нашем случае, функция trunc пытается примениться к значению value. В первой строке - 1000 (все ок), во второй - 'Test' (ошибка).
Ставьте лайк, если было познавательно. 🔔 Если хотите узнать больше про индексы, следите за каналом — завтра будет важное объявление.
Понедельник — отличный день, чтобы разогреть мозги небольшим техническим кейсом 💡 Сегодня короткий, но полезный пост — с ответом сразу.
📌 Дано:
create table demo_table ( ID char(4 CHAR), value VARCHAR2(64 CHAR) );
Известно, что есть следующие индексы и ключи:
create index DEMO_TBL_VALUE_IX on demo_table (VALUE);
alter table DEMO_TABLE add constraint DEMO_TBL_PK primary key (ID) using index;
Вопрос (c подвохом) почему такая вставка проходит:
insert into demo_table values('0001', 1000);
А эта падает с ошибкойORA-01722: неверное число:
insert into demo_table values('0002', 'Test');
Ответ при наличии следующего индекса
create index DEMO_TBL_NUM_IX on demo_table(trunc(VALUE));
Такая конструкция называется индексом по функции (function based index). В реальных проектах она используется довольно часто, например, когда на строковое поле мы создаем индекс UPPER(<column>). Особенность такого индекса в том, что в листьях он хранит результат выполнения этой функции для каждого rowid. Поэтому никакой магии тут нет: если мы не можем записать в индекс результат функции, то и вставку выполнить мы не можем.
В нашем случае, функция trunc пытается примениться к значению value. В первой строке - 1000 (все ок), во второй - 'Test' (ошибка).
Ставьте лайк, если было познавательно. 🔔 Если хотите узнать больше про индексы, следите за каналом — завтра будет важное объявление.
Telegram today rolling out an update which brings with it several new features.The update also adds interactive emoji. When you send one of the select animated emoji in chat, you can now tap on it to initiate a full screen animation. The update also adds interactive emoji. When you send one of the select animated emoji in chat, you can now tap on it to initiate a full screen animation. This is then visible to you or anyone else who's also present in chat at the moment. The animations are also accompanied by vibrations. This is then visible to you or anyone else who's also present in chat at the moment. The animations are also accompanied by vibrations.
Telegram Gives Up On Crypto Blockchain Project
Durov said on his Telegram channel today that the two and a half year blockchain and crypto project has been put to sleep. Ironically, after leaving Russia because the government wanted his encryption keys to his social media firm, Durov’s cryptocurrency idea lost steam because of a U.S. court. “The technology we created allowed for an open, free, decentralized exchange of value and ideas. TON had the potential to revolutionize how people store and transfer funds and information,” he wrote on his channel. “Unfortunately, a U.S. court stopped TON from happening.”