Co vrací insert a jak to testovat na to, jestli proběhnul?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
karelb
Člen | 17
+
0
-

Dělám přes Nette\Database vkládání do tabulky přes Nette\Database\Table->insert. Vkládám pouze jeden řádek.

Chci „pro jistotu“ otestovat, jestli vložení proběhlo. Co přesně vrací Nette\Database\Table->insert?

Jako vždy nejasná dokumentace uvádí „Returns IRow or number of affected rows for Selection or table without primary key“, což nedokážu rozluštit. (Navíc nerozumím, co tam dělá v typu ten boolean.) Stránka o databázi v dokumentaci insert úplně ignoruje ( https://doc.nette.org/en/database ).

Tedy, co přesně vrací insert, a jak jednoduše otestovat, jestli proběhl?

Editoval karelb (30. 1. 2014 11:22)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Ta složitá věta z API dokumentace znamená toto:

  1. za normálních okolností to vráti instanci IRow právě vytvořeného záznamu
  2. pokud ale bylo insert() voláno na tabulce bez primárního klíče nebo byla jako data předána instance Selection, vrátí metoda pouze počet upravených řádků
karelb
Člen | 17
+
0
-

Aha! Super. A pokud se insert nepovedl, tak to vrací „false“, což je ten boolean? (Bych tipoval.)

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Tipuju stejně :). @hrach bude vědět na 100%.

vvoody
Člen | 910
+
0
-

Takmer určite sa vyhodí PDO exception. A čo takto si vyskúšať napísať insert ktorý nebude možné vykonať? Napríklad neexistujúci FK a pod.