,
*
* Beschreibung:
* Dieses Skript prueft die Datenbank auf Aenderungen bezueglich eine_uid, dabei werden fehlende Attribute angelegt.
*/
require_once('../config/system.config.inc.php');
require_once('../include/basis_db.class.php');
$db = new basis_db();
echo '
";
foreach($all_tables_to_update as $t)
describeOneChange($db, $t);
echo "
";
echo "";
}
else
{
echo "
Es sind keine Änderungen vorzunehmen!
";
}
}
else
{
echo '
Systemcheck!
';
echo '
DB-Updates!
';
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '
Pruefe Tabellen und Attribute!
';
foreach($all_tables_to_update as $t)
modifyOneTable($db, $t);
}
function describeOneChange($db, $tablename)
{
if(!$result = @$db->db_query("SELECT prestudent_id FROM ".$tablename." LIMIT 1;"))
{
echo "
".$tablename.": student_uid wird gelöscht!
";
echo "
".$tablename.": prestudent_id wird eingefügt!
";
}
}
function checkForUpdates($db, $tablename)
{
if(!$result = @$db->db_query("SELECT prestudent_id FROM ".$tablename." LIMIT 1;"))
{
return true;
}
return false;
}
function modifyOneTable($db, $tablename)
{
if(!$result = @$db->db_query("SELECT prestudent_id FROM ".$tablename." LIMIT 1;"))
{
//spalte einfuegen
$add_qry = 'BEGIN; ALTER TABLE '.$tablename.' ADD COLUMN prestudent_id int;
UPDATE '.$tablename.' SET prestudent_id = (SELECT prestudent_id FROM public.tbl_student WHERE student_uid='.$tablename.'.student_uid);';
$db->db_query($add_qry);
//constraints: prestudent_id FK, prestudent_id NOT NULL
$constraint_qry = 'ALTER TABLE '.$tablename.' ALTER COLUMN prestudent_id SET NOT NULL;
ALTER TABLE '.$tablename.' ADD CONSTRAINT prestudent_id FOREIGN KEY (prestudent_id) REFERENCES public.tbl_prestudent (prestudent_id);';
if(!$db->db_query($constraint_qry))
{
echo ''.$tablename.': '.$db->db_last_error().' ';
}
else
{
echo ' '.$tablename.': Spalte prestudent_id hinzugefuegt! ';
echo ' '.$tablename.': Spalte student_uid auf prestudent_id geändert! ';
echo ' '.$tablename.': Spalte prestudent_id constraints eingefuegt! ';
//student_uid löschen
$qry = 'ALTER TABLE '.$tablename.' DROP COLUMN student_uid;';
if(!$db->db_query($qry))
{
echo ''.$tablename.': '.$db->db_last_error().' ';
echo ''.$tablename.': ACHTUNG! In diesem Fall sollte prestudent_id ordnungsgemäß eingetragen sein, jedoch student_uid nicht gelöscht worden sein. Das Skript erneut zu starten wird nicht funktionieren! ';
}
else
{
echo ' '.$tablename.': Spalte student_uid gelöscht! ';
$db->db_query("COMMIT;");
return;
}
}
}
$db->db_query("ROLLBACK;");
}
$tabellen=array(
"bis.tbl_bisio" => array("bisio_id","mobilitaetsprogramm_code","nation_code","von","bis","zweck_code","updateamum","updatevon","insertamum","insertvon", "ext_id","ort","universitaet","lehreinheit_id","prestudent_id"),
"campus.tbl_lvgesamtnote" => array("lehrveranstaltung_id","studiensemester_kurzbz","note","mitarbeiter_uid","benotungsdatum","freigabedatum","bemerkung","freigabevon_uid","prestudent_id","punkte","ext_id","updateamum","updatevon","insertamum","insertvon"),
);
echo '
Gegenpruefung!
';
$error=false;
$sql_query="SELECT schemaname,tablename FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema' AND schemaname != 'sync' AND schemaname != 'addon';";
if (!$result=@$db->db_query($sql_query))
echo ' '.$db->db_last_error().' ';
else
while ($row=$db->db_fetch_object($result))
{
$fulltablename=$row->schemaname.'.'.$row->tablename;
if (isset($tabellen[$fulltablename]))
if (!$result_fields=@$db->db_query("SELECT * FROM $fulltablename LIMIT 1;"))
echo ' '.$db->db_last_error().' ';
else
for ($i=0; $i<$db->db_num_fields($result_fields); $i++)
{
$found=false;
$fieldnameDB=$db->db_field_name($result_fields,$i);
foreach ($tabellen[$fulltablename] AS $fieldnameARRAY)
if ($fieldnameDB==$fieldnameARRAY)
{
$found=true;
break;
}
if (!$found)
{
echo 'Attribut '.$fulltablename.'.'.$fieldnameDB.' existiert in der DB, aber nicht in diesem Skript! ';
$error=true;
}
}
}
if($error==false)
echo ' Gegenpruefung fehlerfrei';
echo '';
?>