mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-06 18:24:26 +08:00
Invalidate columns and keys of an edited table when pressing the "Save" button, to avoid SQL errors when switching to "Data" tab. Fixes issue #1556
This commit is contained in:
@ -849,6 +849,7 @@ type
|
||||
function MaskMulti(str: WideString): WideString;
|
||||
procedure SelectDBObject(Text: WideString; NodeType: TListNodeType);
|
||||
procedure SetupSynEditors;
|
||||
procedure ParseSelectedTableStructure;
|
||||
end;
|
||||
|
||||
|
||||
@ -6001,20 +6002,7 @@ begin
|
||||
newDbObject := SelectedTable.Text;
|
||||
tabEditor.TabVisible := True;
|
||||
tabData.TabVisible := SelectedTable.NodeType in [lntTable, lntView];
|
||||
SelectedTableColumns.Clear;
|
||||
SelectedTableKeys.Clear;
|
||||
SelectedTableForeignKeys.Clear;
|
||||
try
|
||||
case SelectedTable.NodeType of
|
||||
lntTable: begin
|
||||
SelectedTableCreateStatement := Connection.GetVar('SHOW CREATE TABLE '+Mainform.mask(SelectedTable.Text), 1);
|
||||
ParseTableStructure(SelectedTableCreateStatement, SelectedTableColumns, SelectedTableKeys, SelectedTableForeignKeys);
|
||||
end;
|
||||
lntView: ParseViewStructure(SelectedTable.Text, SelectedTableColumns);
|
||||
end;
|
||||
except on E:Exception do
|
||||
MessageDlg(E.Message, mtError, [mbOK], 0);
|
||||
end;
|
||||
ParseSelectedTableStructure;
|
||||
if tabEditor.TabVisible then begin
|
||||
actEditObjectExecute(Sender);
|
||||
// When a table is clicked in the tree, and the current
|
||||
@ -6040,6 +6028,25 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.ParseSelectedTableStructure;
|
||||
begin
|
||||
SelectedTableColumns.Clear;
|
||||
SelectedTableKeys.Clear;
|
||||
SelectedTableForeignKeys.Clear;
|
||||
try
|
||||
case SelectedTable.NodeType of
|
||||
lntTable: begin
|
||||
SelectedTableCreateStatement := Connection.GetVar('SHOW CREATE TABLE '+Mainform.mask(SelectedTable.Text), 1);
|
||||
ParseTableStructure(SelectedTableCreateStatement, SelectedTableColumns, SelectedTableKeys, SelectedTableForeignKeys);
|
||||
end;
|
||||
lntView: ParseViewStructure(SelectedTable.Text, SelectedTableColumns);
|
||||
end;
|
||||
except on E:Exception do
|
||||
MessageDlg(E.Message, mtError, [mbOK], 0);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TMainForm.DatabaseChanged(Database: WideString);
|
||||
begin
|
||||
if (Database='') or (Databases.IndexOf(Database) > -1) then
|
||||
|
@ -396,6 +396,7 @@ begin
|
||||
tabALTERcode.TabVisible := FEditObjectName <> '';
|
||||
Mainform.SetEditorTabCaption(Self, FEditObjectName);
|
||||
Mainform.RefreshTreeDB(Mainform.ActiveDatabase);
|
||||
Mainform.ParseSelectedTableStructure;
|
||||
ResetModificationFlags;
|
||||
except
|
||||
on E:Exception do
|
||||
|
@ -180,6 +180,7 @@ begin
|
||||
FEditObjectName := editName.Text;
|
||||
Mainform.SetEditorTabCaption(Self, FEditObjectName);
|
||||
Mainform.RefreshTreeDB(Mainform.ActiveDatabase);
|
||||
Mainform.ParseSelectedTableStructure;
|
||||
Modified := False;
|
||||
btnSave.Enabled := Modified;
|
||||
btnDiscard.Enabled := Modified;
|
||||
|
Reference in New Issue
Block a user