Архив за ‘

PostgreSQL

’ категория

PostgreSQL и мрежовите оператори

Работил съм по няколко проекта, при които изискване беше използването на PostgreSQL и наистина започнах да го харесвам, макар отначалото да ми се стори зле. Доста функционалности, които са много полезни в различни случаи. Една от тях е мрежовия оператор <<=

is contained within or equals – inet ’192.168.1/24′ <<= inet ’192.168.1/24′

По този начин може да се провери дали дадено IP принадлежи към конкретна мрежа. Простичко, нали! Ноза жалост на мен ми трябваше да взема адреси, които не принадлежат към конкретна мрежа :) . Е, няма го обратния оператор – поне аз не намерих такъв. Така че това, което направих е:


SELECT COUNT(*) FROM ips WHERE  CASE WHEN ip <<= inet '192.168.1/24' THEN false ELSE true END

Добавяне на множество безразборно генерирани низове към база от данни

Днес случайно се натъкнах на парче код, написано от мен доста отдавна, което много ме изнедада и му се зарадвах някакси. Сътворил съм странно решение на интересна задача. Представете си, че трябва да добавите определено количество от редове в таблица, например промо кодове, които реално са безразборно генерирани низове. Тези низове трябва да са уникални разбира се, така че имаме unique key в базата! И така вместо генериране на кодовете, проверка дали вече ги има в таблицата и ако не-> добавяне в таблицата, аз просто съм направил следното:

$j = 0;
for($i=0; $i<$count; $i++)
{
	while(true)
	{
		try
		{
			$code = str_makerand();
			$codeID = $this->addItem(
				$this->tableNameCodes,
				array('code'),
				array($code)
			);

			break;
		}
		catch(Exception $e){
			break;
		}
	}
}