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 hopes to raise $1bn with a convertible bond private placement

The super secure UAE-based Telegram messenger service, developed by Russian-born software icon Pavel Durov, is looking to raise $1bn through a bond placement to a limited number of investors from Russia, Europe, Asia and the Middle East, the Kommersant daily reported citing unnamed sources on February 18, 2021.The issue reportedly comprises exchange bonds that could be converted into equity in the messaging service that is currently 100% owned by Durov and his brother Nikolai.Kommersant reports that the price of the conversion would be at a 10% discount to a potential IPO should it happen within five years.The minimum bond placement is said to be set at $50mn, but could be lowered to $10mn. Five-year bonds could carry an annual coupon of 7-8%.

For some time, Mr. Durov and a few dozen staffers had no fixed headquarters, but rather traveled the world, setting up shop in one city after another, he told the Journal in 2016. The company now has its operational base in Dubai, though it says it doesn’t keep servers there.Mr. Durov maintains a yearslong friendship from his VK days with actor and tech investor Jared Leto, with whom he shares an ascetic lifestyle that eschews meat and alcohol.

Oracle Developer‍ from sa


Telegram Oracle Developer👨🏻‍💻
FROM USA