Telegram Group & Telegram Channel
🧠 SQL-загадка с подвохом

Друзья, всем привет! 👋

Понедельник — отличный день, чтобы разогреть мозги небольшим техническим кейсом 💡
Сегодня короткий, но полезный пост — с ответом сразу.

📌 Дано:

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' (ошибка).


Ставьте лайк, если было познавательно.
🔔 Если хотите узнать больше про индексы, следите за каналом — завтра будет важное объявление.

Всем хорошей и продуктивной рабочей недели! 🔥

#oracle #sql #оптимизация #задачка #Pavel_Dolganov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/oracle_dbd/931
Create:
Last Update:

🧠 SQL-загадка с подвохом

Друзья, всем привет! 👋

Понедельник — отличный день, чтобы разогреть мозги небольшим техническим кейсом 💡
Сегодня короткий, но полезный пост — с ответом сразу.

📌 Дано:

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' (ошибка).


Ставьте лайк, если было познавательно.
🔔 Если хотите узнать больше про индексы, следите за каналом — завтра будет важное объявление.

Всем хорошей и продуктивной рабочей недели! 🔥

#oracle #sql #оптимизация #задачка #Pavel_Dolganov

Канал Oracle Developer | Чатик 💬
Мини-курс Оптимизация: Быстрый старт 🚀

BY Oracle Developer👨🏻‍💻




Share with your friend now:
tg-me.com/oracle_dbd/931

View MORE
Open in Telegram


Oracle Developer‍ Telegram | DID YOU KNOW?

Date: |

Telegram is riding high, adding tens of million of users this year. Now the bill is coming due.Telegram is one of the few significant social-media challengers to Facebook Inc., FB -1.90% on a trajectory toward one billion users active each month by the end of 2022, up from roughly 550 million today.

At a time when the Indian stock market is peaking and has rallied immensely compared to global markets, there are companies that have not performed in the last 10 years. These are definitely a minor portion of the market considering there are hundreds of stocks that have turned multibagger since 2020. What went wrong with these stocks? Reasons vary from corporate governance, sectoral weakness, company specific and so on. But the more important question is, are these stocks worth buying?

Oracle Developer‍ from ca


Telegram Oracle Developer👨🏻‍💻
FROM USA