in src/TriggersBinding/MySqlTriggerUtils.cs [72:97]
public static IReadOnlyList<(string name, string type)> GetPrimaryKeyColumnsAsync(MySqlConnection connection, string userTableName, ILogger logger, CancellationToken cancellationToken)
{
const int NameIndex = 0, TypeIndex = 1;
string getPrimaryKeyColumnsQuery = $"SHOW COLUMNS FROM " + userTableName + " WHERE `Key` = 'PRI'";
using (var getPrimaryKeyColumnsCommand = new MySqlCommand(getPrimaryKeyColumnsQuery, connection))
using (MySqlDataReader reader = getPrimaryKeyColumnsCommand.ExecuteReaderWithLogging(logger))
{
var primaryKeyColumns = new List<(string name, string type)>();
while (reader.Read())
{
cancellationToken.ThrowIfCancellationRequested();
string name = reader.GetString(NameIndex);
string type = reader.GetString(TypeIndex);
primaryKeyColumns.Add((name, type));
}
if (primaryKeyColumns.Count == 0)
{
throw new InvalidOperationException($"Could not find primary key(s) for the given table.");
}
return primaryKeyColumns;
}
}